最近在维护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:这样的流程有哪些潜在问题?