Yii2 和 git 忽略文件



我最近从svn切换到git,我有点困惑。

在 yii2 框架中,有很多.gitignore文件,我了解这些文件的用法。 但我有点困惑为什么忽略vendor目录。

我的开发和生产环境中都需要其中的文件。

我曾经在使用svn时提交其中的文件,但我做错了吗?如果我忽略vendor目录,正确的方法是什么。

每次推送时,我是否需要在两个环境中运行composer update

错。通常你不会提交供应商的东西,因为那是那里的第三方代码,在其他地方受到版本控制。您应该使用作曲家来处理供应商特定代码的更新。这意味着每次部署应用程序时,都应该运行composer update,除非您已经拥有所有供应商代码并且对所需内容没有任何更新。

正如@chris---所说,这毕竟只是一个建议,是否上传和维护供应商库取决于您的选择。要了解它是如何工作的,请转到应用程序内部的composer.json,您将看到如下所示的内容:

"require": {
    "php": ">=5.4.0",
    "yiisoft/yii2": ">=2.0.6",
    "yiisoft/yii2-bootstrap": "*",
    "yiisoft/yii2-swiftmailer": "*"
},
"require-dev": {
    "yiisoft/yii2-codeception": "*",
    "yiisoft/yii2-debug": "*",
    "yiisoft/yii2-gii": "*",
    "yiisoft/yii2-faker": "*"
},

如果需要,您可以在其中编辑和设置任何库的特定版本。现在采取这一行:

"yiisoft/yii2-bootstrap": "*"

每次你这样做composer update作曲家都会从 packagist.org 获取它的存储库(在这里看到它(,将安装找到的最后一个稳定版本("*"的意思(,然后解决它的依赖关系,可以在vendoryiisoftyii2-bootsrapcomposer.json中看到:

"require": {
    "yiisoft/yii2": ">=2.0.6",
    "bower-asset/bootstrap": "3.3.* | 3.2.* | 3.1.*"
},

最后一行将确保安装Twitter Bootstrap 3.3.x的最后一个稳定版本。

这些是确切的库,它们的确切版本在请求 packagist.org 后下载,并在每次从任何机器composer update时保存到供应商文件夹中。如果您上传 twitter bootstrap 3.3.2 以及您的项目作为示例,并且团队成员无需执行composer update即可将其下载回来,那么他可能会发现自己陷入了一个问题,该问题应该在 3.3.3 版本中修复,并且他永远不需要知道他是否只是进行了更新。

这就是作曲家团队所说的回答这个问题:我应该在我的供应商目录中提交依赖项吗?

一般建议不...

。虽然在某些环境中提交它可能很诱人,但它会导致 几个问题:

  • 更新代码时较大的 VCS 存储库大小和差异。
  • 在您自己的 VCS 中复制所有依赖项的历史记录。
  • 将通过 git 安装的依赖项添加到 git 存储库会将它们显示为子模块。这是有问题的,因为它们不是真实的 子模块,您会遇到问题。

还要考虑如果每个项目都必须与其供应商一起上传,应该分配给 github.com 的额外磁盘空间有多大。想想那里可以找到多少完全相同的Twitter引导副本。

最新更新