2

我们通常保留vendor文件夹,.gitignore但不得不禁用它,因为我们在生产服务器上没有 ssh 访问权限,我们需要composer update不时运行。

因此,我们想出了一个想法,即删除.gitignorevendor 文件夹composer update在我们的本地计算机上执行,将所有内容推送到存储库并将其部署FTP到我们的生产服务器。(我们DeployHQ用于做 Repository->Production transfer。)

但是,现在我的本地项目文件夹大小为 100MB,Bitbucket存储库大小仅为 20MB。我的本地供应商文件夹大约 90MB,在存储库中只有几兆字节。

检查时,我在存储库中遇到了这些值Bitbucket

vendor / doctrine /
    annotations
        cache → 89493d2c6e [89493d2c6e]
        collections → 3db3ab843f [3db3ab843f]
        common → c4255b9fbd [c4255b9fbd]
        dbal → 3253f7a1c1 [3253f7a1c1]
        inflector → 8b4b3ccec7 [8b4b3ccec7]
        lexer → bc0e1f0cc2 [bc0e1f0cc2]

在我的本地供应商文件夹中,我看到了 Doctrine 的类和 PHP 文件。

所以我想问几件事;

  1. 为什么会发生这种情况,这些注释意味着什么?(我们可以将它们与符号链接联系起来吗?例如,Git 知道它是 Doctrine,所以它符号链接到 Doctrine 的存储库,并将从 Doctrine 的存储库下载这些文件git pull?)

  2. 我们能否安全地将生产环境中的 90MB 供应商文件夹替换为 git 存储库中的 5MB 供应商文件夹?(通过在生产环境中执行 git pull,或通过 FTP 将存储库文件夹复制到生产环境。)

  3. 您如何自己处理供应商文件夹?在生产环境中通过 SSH保持运行.gitignore并执行 composer update 命令,或者将它们推送到您的 git 存储库并将您的存储库推送到生产服务器?还有,哪个更好?

谢谢你。

附言。生产服务器上既没有安装 git 也没有安装 composer。

附言。我们的上传速度非常低,上传 90MB 大约需要一个小时。让我也注意到这一点,因为我们寻找最快的替代方案。

4

1 回答 1

1
  1. 基本上你是对的,bitbucket 知道它们是你的供应商文件夹中的 git 存储库,因此只需将它们链接到相应的存储库,这样它就不会重复。要真正了解注释,请查看Git 子模块

  2. 不,5MB 版本太小了,因为它不包含实际代码,如果你尝试使用它,事情就会崩溃;)
    尝试运行git submodule init然后git submodule update看看它膨胀了!

  3. 你不应该composer update在你的生产服务器上做,而是在你的登台服务器上做(如果你的测试也没有 ssh,甚至事先在你的本地环境上做[这真的不应该,因为它是为了模拟你的产品环境) ) 如果一切正常,那么您将代码推送到生产服务器。在生产服务器上做一个composer update充其量是有风险的。

于 2013-06-27T07:58:45.347 回答