处理 Symfony2 项目和 Git 分支
Handling Symfony2 project and Git branching
我在 Symfony2 中有一个项目,它在 Git 中维护着几个分支:develop
、testing
和其他一些分支。每个分支上的文件 composer.json
都不同,因此我需要一直 运行 composer update
来更新依赖项 and/or 删除可能导致不良行为的旧库或新库。
现在我正在学习并尝试使用 BDD 编写一些测试:Behat + Mink,我不想在 develop
分支上进行更改,所以我创建了 testing
并进行了该分支上的所有这些更改,但正如我所说,主要问题是 运行 composer update
任何时候我切换分支。
处理这个问题的正确方法是什么?你会怎么做?有什么建议吗?我变得疯狂 运行 多次使用相同的命令,然后将 PHPStorm 上的本地代码(Windows 主机)与远程代码(Linux 服务器)同步。想法?
我想到了一些不同的事情。有些是最佳实践,有些可能会缩短周转时间,具体取决于您要付出多少努力:
基本:
- On .lock down - 确保每个分支都有一个已提交的锁定文件。 right in the Composer documentation 是有原因的。似乎很少有项目喜欢 SemVer,即使是那些项目也会时不时地让突破性的变化潜入。
- 具体 当 运行 进行作曲家更新时,请确保您针对的是 具体 包分支机构(例如:
composer update doctrine/dbal
)。
- 更好的是,根本不要 运行
update
。这可能会错误地更新您不希望更新的分支中的包。最好利用 composer install
.
- 为什么不两者兼而有之? - 将项目的一个单独克隆专用于该分支是否也值得?如果您发现自己经常在这两种情况下工作,那么就不用为切换分支而头疼了。毕竟,disk space 很便宜。
- 从本地删除所有分支,除了您感兴趣的分支。将 Git Push/Pull 设置为 'Simple' 以避免任何意外提交。
中等以上
- 偷懒,去喝杯咖啡 - 考虑一个post-checkout hook。您可以查看 here 作为示例。享受空闲时间喝杯咖啡,规划我们的下一次测试。
- 自己动手 - 安装本地 Satis 实例。我注意到在我们的团队添加了一个本地 Satis 实例并镜像了我们的主要依赖项之后,我们的项目安装有了显着改善。
- VM - 将您的项目转换为使用 VM。 PuPHPet or Phansible 等基于 GUI 的工具可以让您轻松上手。这不会解决您的作曲家问题,但减少与远程同步的往返行程可能值得投入时间。
- 配置调整 - 在每个分支的基础上更改作曲家的供应商目录。有关详细信息,请参阅 this previous answer。
- 注意:由于 unexpected/branch-specific 权限错误等原因,这很可能会给您的测试增加一些复杂性。
- Platform.sh:
- 使用 Platform.sh
设置一个帐户
- ???
- 利润
希望上述的一些组合能帮助您找到一些改进!
我在 Symfony2 中有一个项目,它在 Git 中维护着几个分支:develop
、testing
和其他一些分支。每个分支上的文件 composer.json
都不同,因此我需要一直 运行 composer update
来更新依赖项 and/or 删除可能导致不良行为的旧库或新库。
现在我正在学习并尝试使用 BDD 编写一些测试:Behat + Mink,我不想在 develop
分支上进行更改,所以我创建了 testing
并进行了该分支上的所有这些更改,但正如我所说,主要问题是 运行 composer update
任何时候我切换分支。
处理这个问题的正确方法是什么?你会怎么做?有什么建议吗?我变得疯狂 运行 多次使用相同的命令,然后将 PHPStorm 上的本地代码(Windows 主机)与远程代码(Linux 服务器)同步。想法?
我想到了一些不同的事情。有些是最佳实践,有些可能会缩短周转时间,具体取决于您要付出多少努力:
基本:
- On .lock down - 确保每个分支都有一个已提交的锁定文件。 right in the Composer documentation 是有原因的。似乎很少有项目喜欢 SemVer,即使是那些项目也会时不时地让突破性的变化潜入。
- 具体 当 运行 进行作曲家更新时,请确保您针对的是 具体 包分支机构(例如:
composer update doctrine/dbal
)。- 更好的是,根本不要 运行
update
。这可能会错误地更新您不希望更新的分支中的包。最好利用composer install
.
- 更好的是,根本不要 运行
- 为什么不两者兼而有之? - 将项目的一个单独克隆专用于该分支是否也值得?如果您发现自己经常在这两种情况下工作,那么就不用为切换分支而头疼了。毕竟,disk space 很便宜。
- 从本地删除所有分支,除了您感兴趣的分支。将 Git Push/Pull 设置为 'Simple' 以避免任何意外提交。
中等以上
- 偷懒,去喝杯咖啡 - 考虑一个post-checkout hook。您可以查看 here 作为示例。享受空闲时间喝杯咖啡,规划我们的下一次测试。
- 自己动手 - 安装本地 Satis 实例。我注意到在我们的团队添加了一个本地 Satis 实例并镜像了我们的主要依赖项之后,我们的项目安装有了显着改善。
- VM - 将您的项目转换为使用 VM。 PuPHPet or Phansible 等基于 GUI 的工具可以让您轻松上手。这不会解决您的作曲家问题,但减少与远程同步的往返行程可能值得投入时间。
- 配置调整 - 在每个分支的基础上更改作曲家的供应商目录。有关详细信息,请参阅 this previous answer。
- 注意:由于 unexpected/branch-specific 权限错误等原因,这很可能会给您的测试增加一些复杂性。
- Platform.sh:
- 使用 Platform.sh 设置一个帐户
- ???
- 利润
希望上述的一些组合能帮助您找到一些改进!