在Mercurial中将稳定分支更改移回main的正确方法

时间:2014-03-21 00:32:34

标签: java maven version-control mercurial

在您从主开发分支创建一个稳定分支(例如RC1)之后,在Mercurial中

,您将继续为dev分支开发未来版本。现在,如果您需要对RC1进行快速修复,这些修改被认为是有用的并且也是开发分支所需要的,那么

  1. 在dev上进行更改并为RC1或
  2. 创建补丁
  3. 在RC1上进行更改并为dev或
  4. 创建补丁
  5. 在RC1上进行更改并切换回开发并将RC1合并到dev或
  6. 任何其他正确的方法
  7. 我试过3.但是有一个小问题,合并还将pom版本RC1和那些依赖版本合并到dev,覆盖了SNAPSHOT版本。可能是我做错了。

    所以现在我要去2。

    请告知正确的方法,谢谢

1 个答案:

答案 0 :(得分:2)

我建议使用选项3.这也是standard branching wiki page建议的内容。将RC1中的一些修复程序合并为默认值后,您的历史记录将如下所示:

default:    ... a -- b -- c -- d -- e -- f -- g
                      \       /              /
RC1:                   x --- y ------ z --- w

通过这样合并,没有机会忘记包含来自RC1的错误修正 - 你让工具跟踪事物而不必自己记住它。

您提到的pom.xml文件中的版本未正确更新的问题是由于您在创建RC1分支后更新版本。换句话说,您已在xy上方更新了它。

相反,我会在分支之前将版本从1.0-SNAPSHOT更改为默认分支上的1.0。创建分支后,将版本更改为2.0-SNAPSHOT或您的下一个版本。用版本号注释上面的图形,它将如下所示:

              1.0-S   1.0   2.0-S  2.0-S  2.0-S  2.0-S  2.0-S
default:    ... a ---- b ---- c ---- d ---- e ---- f ---- g
                        \           /                    /
RC1:                     x ------- y -------- z ------- w
                        1.0       1.0        1.0       1.0

请记住,当Mercurial合并文件时,它会比较文件的三个版本:

  • 祖先版
  • 本地版本(工作副本父版本中的版本)
  • 另一个版本(您要合并到当前分支的版本)

因此,当您将y合并到上面的c时,我们会考虑pom.xml的这三个版本:

  • b版本1.0
  • 的版本
  • 版本为2.0-SNAPSHOT的c版本
  • y版本1.0
  • 的版本

三向合并实际上是三个文件之间的“投票”:c中的文件说版本应该更改为2.0-SNAPSHOT。来自y的文件说版本可以保持为1.0。通过三向合并始终认为更改很好,因此合并结果将是版本2.0-SNAPSHOT。