Yii2和git忽略文件

时间:2016-02-05 11:45:48

标签: git svn yii2 vendor

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

在yii2框架中,有许多.gitignore个文件,我理解这些文件的使用。但是有点混淆为什么vendor目录被忽略了。

我的开发和生产环境都需要那里的文件。

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

正如@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 看到here )获得回复,将安装最后一个找到稳定版本("*"意味着什么)然后将解决其在\vendor\yiisoft\yii2-bootsrap\composer.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 ,并且他永远不需要知道他是否刚刚进行了更新。

这就是Composer团队回答这个问题的原因:Should I commit the dependencies in my vendor directory?

  

一般建议是否......

     

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

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

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