处理 Symfony2 项目和 Git 分支

Handling Symfony2 project and Git branching

我在 Symfony2 中有一个项目,它在 Git 中维护着几个分支:developtesting 和其他一些分支。每个分支上的文件 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:
    1. 使用 Platform.sh
    2. 设置一个帐户
    3. ???
    4. 利润

希望上述的一些组合能帮助您找到一些改进!