使用'移植'时,"跳过祖先修订版"意味着什么?

jco*_*lum 8 mercurial

我正在使用该graft命令将4个变更集从BranchA拉入BranchB.当我这样做时,有些是嫁接的,有些则不是:

PS D:\Dev\ProjectAlpha> hg graft 5f403abb2b24
skipping ancestor revision 15911
PS D:\Dev\ProjectAlpha> hg graft 535ff712c5a3
grafting revision 15925
PS D:\Dev\ProjectAlpha> hg graft cf42b7113e02
grafting revision 15931
PS D:\Dev\ProjectAlpha> hg graft 6920922ee602
skipping ancestor revision 15910
Run Code Online (Sandbox Code Playgroud)

我找不到任何解释这个的文件.我可以找到消息来源,但如果有人可以来解释一下,也许对其他人有帮助.

我需要记住贪污手术的顺序吗?我做错了吗?

Ry4*_*ase 11

来自hg help glossary:

Ancestor
    Any changeset that can be reached by an unbroken chain of parent
    changesets from a given changeset. More precisely, the ancestors of a
    changeset can be defined by two properties: a parent of a changeset is
    an ancestor, and a parent of an ancestor is an ancestor. See also:
    'Descendant'.
Run Code Online (Sandbox Code Playgroud)

所以贪污拒绝将你当前变革集的后代改编成因为他们已经是你当前变革集的祖先,并且让你的祖先成为你的后代被证明在"回到未来"电影中不起作用.;)

  • @Helgi嫁接祖先修订版不会使DAG成为循环修订版.嫁接基本上只是在当前历史记录之上重新应用来自提交的补丁.从`hg graft --help`:"此命令使用Mercurial的合并逻辑从其他分支复制单个更改,而不在历史图表中合并分支".注意单词"copy"和"without merge".恕我直言,只是定义不明确的行为"将跳过当前版本[...]的祖先的变更集",因为它不允许例如重新应用作为错误合并提交解决方案的一部分而被还原的良好提交. (10认同)