处理在具有多个修补程序分支的git流环境中准备maven版本导致的重复合并冲突的最佳做法是什么?
(见http://nvie.com/posts/a-successful-git-branching-model/)
在这种情况下,需要多个修补程序分支来维护至少两个应用程序修订版。 oldstable的修复程序会定期合并到newstable修补程序分支中。那些发布分支之间的那些合并导致了重复出现的合并冲突,我将在下面解释:
每个分支的pom.xml工件版本都是唯一的。
示例:
master - <version>1.2.0</version> (Contains the latest release)
\
dev - <version>1.3.0-dev-SNAPSHOT</version> (Contains changes for the next release)
|\
| hotfix-oldstable - <version>1.1.1-hotfix-SNAPSHOT</version> (Contains new hotfixes for the oldstable version)
| \
| release-oldstable - <version>1.1.1-SNAPSHOT</version> (Is used to prepare the release)
\
\
hotfix-newstable - <version>1.2.1-hotfix-SNAPSHOT</version> (Contains new hotfixes for the newstable version)
\
release-newstable - <version>1.2.1-SNAPSHOT</version> (Is used to prepare the release)
我目前的工作流程如下:
在该步骤之后,两个释放分支都需要稳定。这是一个重要的步骤,因为必须将提交从oldstable合并到newstable,因为newstable版本很可能也受到oldstable版本中检测到的问题的影响。从 release-oldstable 到 release-newstable 的合并会导致冲突,因为在两个分支中都修改了pom.xml。
当然,这可以通过使用樱桃选择来规避,但我正在寻找替代解决方案。
现在为下一个版本重复该过程。
目前我只能想到这些选择:
更新
我最后选择了最后一个选项。我添加了一个预构建脚本,它更新了修补程序分支构建的pom.xml版本。该脚本只是使用maven release plugin update-versions目标为pom.xml版本标记添加分类器。这有效地防止了对修补程序分支中的pom.xml文件的更改,并使合并变得更加容易。
答案 0 :(得分:2)
您是否考虑过离开Git Flow?我工作的项目在我们第一次使用Git时使用它;然而,它已经到了这样的程度,它正在阻碍而不是它的帮助。使用它来执行以前版本的修补程序的问题最终导致我们决定一劳永逸地删除它。回想起来,这是一个很好的决定,我们应该早点完成。
今天,我们只是将简单的功能分支与标签合并为主。我们没有遇到任何问题,之前发布的hofixes不再那么痛苦。
答案 1 :(得分:1)
也许这对你来说也是一个解决方案?在这里查看我的答案:https://stackoverflow.com/a/26866992/1313037
答案 2 :(得分:0)
我发现了另一个工具,它允许以非常干净的方式处理pom.xmls中版本的合并冲突。