我在Symfony2中有一个项目,它在Git中维护几个分支:develop
, testing
和其他一些。文件composer.json
在每个分支上都是不同的,所以我需要一直运行composer update
来更新依赖项和/或删除可能导致不必要行为的旧或新库。
现在我正在学习并尝试使用BDD: Behat + Mink编写一些测试,我不想在develop
分支上进行更改,所以我创建了testing
并在该分支上进行了所有这些更改,但正如我所说的主要问题是在切换分支时运行composer update
。
处理这个问题的正确方法是什么?你会怎么做?任何建议吗?我正在疯狂地运行相同的命令几次,然后在PHPStorm上同步我的本地代码(Windows主机)对远程代码(Linux服务器)。想法吗?
我想到了一些不同的事情。有些是最佳实践,有些可能会减少周转时间,这取决于您想要付出多少努力:
基本:- On .lock down -确保每个分支都有一个提交的锁文件。它出现在Composer文档中是有原因的。似乎很少有项目欣赏SemVer,甚至那些项目也会时不时地让一个突破性的变化潜入。
- 要具体当运行一个编写器更新时,确保你的目标是特定的包,这些包在分支之间不同(例如:
composer update doctrine/dbal
)。- 最好不要运行
update
。这可能是错误地更新了您不打算更新的分支中的包。最好使用composer install
。
- 最好不要运行
- 为什么不同时使用? -也许有一个单独的克隆项目专门用于该分支也是值得的?如果您经常使用这两种方法,那么就可以省去切换分支的麻烦。毕竟,磁盘空间很便宜。
- 删除本地的所有分支,除了你感兴趣的。将Git Push/Pull设置为"Simple",以避免任何意外提交。
中等或较高
- 偷懒,去喝点咖啡 -考虑一个结帐后的钩子。你可以在这里看到一个例子。享受空闲时间,喝杯咖啡,规划下一个测试。
- Roll Your Own -安装本地Satis实例。我注意到,在我们的团队添加了一个本地Satis实例并镜像了我们的主要依赖项之后,我们的项目安装有了明显的改进。
- VM -将项目转换为使用VM。基于gui的工具,如PuPHPet或Phansible,可以让您轻松上手。这并不能解决你的作曲问题,但是减少与远程同步的往返可能是值得投入时间的。
- Config tweak -在每个分支的基础上更改编写器的供应商目录。有关详细信息,请参阅前面的回答。
- 注意:由于意外的/分支特定的权限错误等,这很可能会给您的测试增加一些复杂性。
- 使用Platform.sh 设置账号
- ? ? 利润
希望以上的一些组合能帮助你找到一些改进!