我是mercurial的新手,我读到只能从另一个分支合并一个单独的变更集。 然后我不知道解决这个问题的最佳方法是什么:
什么是最好的方法?由于合并不起作用,我所做的是制作一个CS2补丁,然后在新的稳定分支中应用补丁来修复错误。这是Mercurial的方式吗?
干杯,
答案 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
之上修复,然后将其合并到开发提示中。
那是:
R1
开始。cs1...csN
。R1
之上稳定,因此hg update R1
。R2
。hg update csN
。hg merge R2
,hg commit
... csN+1
。