我们正在采用新的分支策略来与敏捷合作,并使我们能够逐个特性地发布,因此我们有一个master
分支和一个QA
永久分支。每晚构建将基于QA
和发布将来自master
. 开发人员将为每个故事创建一个功能分支。所有功能分支都将被分支出来master
,然后合并到QA
测试中,然后将功能分支合并到master
后续发布中。这很好,直到出现以下情况:
- 开发人员 A(“Rod”)已经创建
feature/RodsFeature
、执行了一些工作并合并到QA
(但还没有master
) - 开发人员 B (“Jane”) 已经创建
feature/JanesFeature
、执行了一些工作,现在正试图合并到QA
- Jane 的合并冲突现在正在发生,这是
QA
由 Rod 合并feature/RodsFeature
如果 Jane 绕过 QA 并合并feature/JanesFeature
到master
中,则不会出现冲突,因为feature/RodsFeature
尚未在master
. QA
然而,出于显而易见的原因,简必须融入其中。为了解决冲突,她可以将 Rod 的更改拉入并将其集成到她的特性分支中,解决冲突然后执行合并 - 不良后果是,一旦她将她的特性分支合并到master
其中,也会引入 Rod 的更改,这些更改是仍在等待质量检查测试。
所以 - 一种解决方法是直接在QA
分支上解决冲突,让 Jane 的功能分支完好无损,以便以后合并到master
. 但是,这违反了代码审查政策,因为合并应该得到同行的批准——通过这样做,她已经在本地合并QA
并推送到远程,而没有任何拉取请求或同行审查。
在这种情况下,什么被认为是“最佳实践”?