我最近从svn
切换为git
,我有点糊涂了。Yii2和Git忽略文件
在yii2框架,有很多.gitignore
文件,据我所知,使用这些文件。但我是一个有点困惑的原因是vendor
目录忽略。
在那里的文件,需要在两个我的开发和生产环境。
当我使用svn
时,我曾经在那里提交文件,但是我做错了吗?什么是这样做,如果我忽略了vendor
目录的正确方法。
我是否需要在每次执行推送时在两个环境上运行composer update
?
我最近从svn
切换为git
,我有点糊涂了。Yii2和Git忽略文件
在yii2框架,有很多.gitignore
文件,据我所知,使用这些文件。但我是一个有点困惑的原因是vendor
目录忽略。
在那里的文件,需要在两个我的开发和生产环境。
当我使用svn
时,我曾经在那里提交文件,但是我做错了吗?什么是这样做,如果我忽略了vendor
目录的正确方法。
我是否需要在每次执行推送时在两个环境上运行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(看到它here)时,将安装找到的最后一个稳定版(什么"*"
手段)然后将其解决依赖由此可以看出里面\vendor\yiisoft\yii2-bootsrap\composer.json
:
"require": {
"yiisoft/yii2": ">=2.0.6",
"bower-asset/bootstrap": "3.3.* | 3.2.* | 3.1.*"
},
最后一行将garante的蠢的最新稳定版本的安装ter Bootstrap 3.3.x。
在请求packagist.org后,这些确切的版本均已下载,每当您从任何机器上执行composer update
时,都会将其保存到供应商文件夹。如果您上传twitter引导程序3.3.2以及您的项目作为示例,并且团队成员将其下载回来而不必执行composer update
,那么他可能会发现自己陷入了一个问题,该问题假设在版本3.3.3中得到修复,并且他从不需要知道他是否只是进行了更新。
这是作曲家团队说要回答的问题是什么:Should I commit the dependencies in my vendor directory?:
一般建议不......
...虽然这是很有诱惑力的承诺它在某些环境下,它会导致 几个问题:
- 大型VC库的大小,当你更新代码的diff。
- 在您自己的VCS中复制所有依赖关系的历史记录。
- 将通过git安装的依赖关系添加到git仓库中会将它们显示为子模块。这是有问题的,因为它们不是真正的 子模块,并且会遇到问题。
也想就如何之大,应分配给github.com如果每个项目有额外的磁盘空间与它的供应商上传。并想想在那里可以找到多少完全相同的twitter bootstrap副本。
这是正确的。通常你不提交供应商的东西,因为那是在其他地方受版本控制的第三方代码。您应该使用作曲家来处理更新供应商特定的代码。这意味着每次部署应用程序时,您都应该运行composer update
,除非您已经拥有所有供应商代码,并且没有任何所需内容的更新。
好吧,我明白你的观点,但对我来说仍然存在一些困惑。假设我要开始一个新项目,我该从哪里开始?在我的服务器(procuction)或本地机器(开发)上,然后将其推送到我的git ..现在,一旦所有东西都设置好了,并且可以说我开发了一个具有作曲者依赖关系的模块,当我推动它时,我必须在那里做一个作曲家更新,这会将相关性放在那里。但如果我在模块上工作了很长时间,并且依赖项已经更新,但我没有更新我的本地作曲者,我的服务器将有不同的版本,对不对? – user2707590
我不太确定,如果我理解正确,但composer.json(dev&prod)应该是相同的。这就是为什么你也可以在版本控制下使用它。所以在完成'composer update'后,dev和prod机器应该有相同的版本。 除此之外,它只是一个建议。如果您知道这一点,让供应商文件夹在版本控制下是完全正确的。但是,编写器更新时可能会覆盖其中的代码。 –