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

luj*_*jop 12 version-control mercurial

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

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

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

干杯,

Lar*_*zan 12

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

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

SourceTree

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

TortoiseHg

完全一样,选择TARGET分支,然后选择你想要移植的修订:如何移植TortoiseHg

命令行

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

hg graft -r {revision_number}
Run Code Online (Sandbox Code Playgroud)

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

要了解有关移植命令的更多信息,请在stackoverflow上阅读此主题


Ida*_*n K 7

移植扩展自动化,你对我所做的一个命令是什么.

但我认为首选的方法(取决于场景并不总是可行)是首先将修复程序R1放在首位,然后将其合并到您的开发提示中.

那是:

  1. 从稳定版本开始R1.
  2. 你做了一些工作cs1...csN.
  3. 一个重要的修复需要稳定在上面R1,所以你hg update R1.
  4. 做这个修复,这会产生R2.
  5. 回到你离开的地方,hg update csN.
  6. 合并稳定所以你有修复hg merge R2,hg commit...
  7. 继续努力csN+1.