2
在Mercurial中使用嫁接的后果
最近在维护Mercurial中的发行分支时,有一些关于跳过更改的问题。例如: Mercurial:虚拟合并后,分支特定的更改会继续出现 为什么一个分支机构中的Mercurial退出影响其他分支机构? 自从2.0版引入以来,我一直想知道如何使用它graft来避免此问题。给定这样的修订树: A---B---C---D---E---F---G---H---I---J 假设我们需要创建一个跳过Evil更改的发行分支E。 hg update -r D hg graft "F::J" 给我们: A---B---C---D---E---F---G---H---I---J \ --F'--G'--H'--I'--J' 问题1:这里发生了什么?我可以理解,这transplant会从中生成补丁F::J,然后将其应用到D,但graft据说使用的是3向合并,而不是补丁。所以.......这是怎么工作的?为什么会更好? 可以说我现在修复了E,并将其合并到我的发布分支中。 --E2----------------- / \ A---B---C---D---E---F---G---H---I---J---M1 \ \ --F'--G'--H'--I'--J'---------M2-- M1是直接合并;那里没什么特别的。M2是合并分支,这些分支具有“相同”(或至少等效)的更改。 Q2:这是合并只是使用普通的3路合并D,J'以及M1? 问题3:Mercurial是否存储/使用了有关嫁接操作的额外信息以帮助合并? 最后... 问题4:这样的流程有哪些潜在问题?