仅合并另一个分支中的一个变更集

时间:2011-08-18 20:35:56

标签: version-control mercurial

我是mercurial的新手,我读到只能从另一个分支合并一个单独的变更集。 然后我不知道解决这个问题的最佳方法是什么:

  1. 我从一个稳定的修订版R1开始
  2. 我继续开发R1:CS1,CS2,CS3
  3. 在某些时候,我需要从我的稳定修订版R1中解决bug。我想只应用开发线(fe CS2)
  4. 中的一个变更集

    什么是最好的方法?由于合并不起作用,我所做的是制作一个CS2补丁,然后在新的稳定分支中应用补丁来修复错误。这是Mercurial的方式吗?

    干杯,

2 个答案:

答案 0 :(得分:11)

更新:从Hg 2.0开始不再需要任何扩展

正如'CAD bloke'指出的那样,这正是Hg 2.0中引入的graft命令。

<强> SourceTree

最简单的方法是使用类似SourceTree的GUI,只需双击TARGET分支即可切换,然后在任何其他版本上按鼠标右键并选择“Graft”命令(奇怪的是它也可以是当前分支的修订版)。 如果没有冲突,SourceTree将立即为当前分支创建新版本。

<强> TortoiseHg

完全一样,选择TARGET分支,然后选择你想要移植的修订版:How to graft with TortoiseHg

命令行

要使用命令行执行此操作,只需切换到TARGET分支,然后执行

hg graft -r {revision_number}
带有{revision_number}的

显然是要包含在当前分支中的修订号。这将在您当前的分支中创建一个新的变更集,其中包含您在命令中使用的编号的所有文件。

要了解有关移植命令的更多信息,请阅读stackoverflow

上的此主题

答案 1 :(得分:7)

transplant extension使您对单个命令所做的自动化。

但我认为首选方式(取决于方案并非总是可行)是首先在R1之上修复,然后将其合并到开发提示中。

那是:

  1. 从稳定版本R1开始。
  2. 你做了一些工作,cs1...csN
  3. 需要一个重要的解决方法才能在R1之上稳定,因此hg update R1
  4. 执行修复,这会产生R2
  5. 回到您离开的地方hg update csN
  6. 合并稳定,以便您获得修复hg merge R2hg commit ...
  7. 继续csN+1