最近有几个关于在Mercurial中维护发布分支时跳过更改的问题.例如:
自从它在2.0中引入以来,我一直想知道如何graft避免这个问题.给定这样的修订树:
A---B---C---D---E---F---G---H---I---J
Run Code Online (Sandbox Code Playgroud)
假设我们需要创建一个跳过Evil更改的发布分支E.
hg update -r D
hg graft "F::J"
Run Code Online (Sandbox Code Playgroud)
给我们:
A---B---C---D---E---F---G---H---I---J
\
--F'--G'--H'--I'--J'
Run Code Online (Sandbox Code Playgroud)
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--
Run Code Online (Sandbox Code Playgroud)
M1是直接合并; 没什么特别的.M2正在合并具有"相同"(或至少等同)变化的分支.
D,J'和M1?最后......
说,我对我的代码做了很多更改,只需要提交一些更改.有没有办法在mercurial中做到这一点?我知道darcs有这样一个功能.
我知道hg transplant可以在分支之间执行此操作,但是我需要这样的东西来提交当前分支中的代码而不是从其他分支添加更改集时.