我想嫁接合并变更集:
$ hg graft -UD --log -r 1909
skipping ungraftable merge revision 1909
Run Code Online (Sandbox Code Playgroud)
我的解决方法是:
hg export -r 1909 | hg import -
hg commit -m"$(hg log -r 1909 --template 'grafted {node}')"
Run Code Online (Sandbox Code Playgroud)
是否有理由不支持嫁接合并变更集?
从Mercurial 版本 4.9开始,命令hg graft
有一个--base
选项可用于此目的。\n它的用法在hgraft 文档页面
中有解释:
\n\n\n--base 可用于指定第一个且唯一的父代之外的另一个祖先。
\n
\xe3\x80\x80
\n\n\n\n\n因此,通过将合并父级之一指定为基础,可以将合并的结果作为单个提交向后移植
\n
在您的示例中,如果您想移植相对于父修订版 1908 的更改,您可以使用以下命令:
\n\nhg graft -r 1909 --base 1908\n
Run Code Online (Sandbox Code Playgroud)\n
合并变更集有两个父项,因此有两种不同的方式来查看更改的内容。默认情况下,如果您使用hg diff -c <changeset>
它将显示与第一个父级相比的差异,第一个父级通常代表合并时的工作目录。如果这个假设是错误的,那么很容易引入错误。
这就引出了一个问题:为什么要移植合并变更集而不是原始变更集本身。如果您想要嫁接一系列变更集,并且您正在使用合并变更集来“汇总”该系列,则可以一次嫁接原始的多个变更:hg graft "1000::1005"
。
就我个人而言,我通常用于hg rebase
此类任务,尽管这需要在 hgrc 或 Mercurial.ini 中启用 rebase 扩展:
[extensions]
rebase=
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4343 次 |
最近记录: |