最近有几个关于在 Mercurial 中维护发布分支时跳过更改的问题。例如:
自从它在2.0中引入以来,我一直想知道如何使用 graft
来避免这个问题。给定一个这样的修订树:
A---B---C---D---E---F---G---H---I---J
假设我们需要创建一个发布分支来跳过邪恶更改 E
。
hg update -r D
hg graft "F::J"
给我们:
A---B---C---D---E---F---G---H---I---J
\
--F'--G'--H'--I'--J'
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正在合并具有“相同”(或至少等效)更改的分支。
D
,J'
和 M1
?最后。