语境:
- 7 位开发人员
- 1 个产品
- 3个分支:
- 3.6 版(稳定版)
- 3.7 版(稳定版)
- 大师(开发)
制定的规则和政策:
- 在早期版本中所做的任何修复都必须在所有未来版本中合并。
- 集成是连续的:如果你在 3.6 中修复某些东西,你必须在推送之前在 3.7 和 master 中集成和测试。
- 如果可能,请在提交之前重新调整您的工作,以便您两天前在本地提交的内容实际上会重新放在首位。我知道这是一个偏好问题,有利也有弊,但这是我们作为一个团队最喜欢的。
我们的问题:
我们有太多无用的合并操作要做。这是一个场景:
正常集成工作:
- Joe 和 Bill 致力于 3.6 中的两个不同的修复。
- 乔完成了,他拉(和变基)
- Joe 在他的 3.6 分支中最后一次测试
- 乔切换到 3.7 并合并 3.6 -合并 1
- Joe 再次测试,这次是在 3.7 的上下文中
- 乔切换到 3.8 并合并 3.7 -合并 2
- Joe 再次测试,这次是在 3.8 的上下文中
- 乔准备推
- 比尔做了几乎相同的事情,但在乔拉后立即推
- 乔试图推动,但操作失败,因为它会创建一个新的头
痛苦(无用)的合并:
- 乔拉,他在 3.6、3.7 和 3.8 中从比尔那里得到东西
- Joe 更新到 3.6 并合并他从 pull- merge 3收到的更改
- Joe 更新到 3.7 并合并他从 pull- merge 4收到的更改
- 乔仍在 3.7 合并 3.6 -合并 5
- Joe 更新到 3.8 并合并他从 pull- merge 6收到的更改
- 乔仍在 3.8 合并 3.7 -合并 7
- 乔试图推动并祈祷在此期间没有人将某些东西推到 3.6。
我们正在考虑编写一个扩展(或批处理或程序)来自动合并这种情况。所以当乔发现他不能推时,他就会跑MergeUpAutomagically
。但在我们尝试解决这个问题之前,我想确保我们使用的是正确的工作流程。