Version control 汞中毒患者使用移植物的后果
在Mercurial中维护发布分支时,最近有几个关于跳过更改的问题。例如:Version control 汞中毒患者使用移植物的后果,version-control,mercurial,branch,dvcs,cherry-pick,Version Control,Mercurial,Branch,Dvcs,Cherry Pick,在Mercurial中维护发布分支时,最近有几个关于跳过更改的问题。例如: 自从它在2.0中引入以来,我一直想知道如何使用graft来避免这个问题。给定这样的修订树: A---B---C---D---E---F---G---H---I---J -e .---- D / E \ '---- F +f -e +f' .---- D ----. / \ E M \
graft
来避免这个问题。给定这样的修订树:
A---B---C---D---E---F---G---H---I---J
-e
.---- D
/
E
\
'---- F
+f
-e +f'
.---- D ----.
/ \
E M
\ /
'---- F ----'
+f -e'
假设我们需要创建一个发布分支来跳过邪恶的更改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
E
,并将其合并到我的发布分支中
--E2-----------------
/ \
A---B---C---D---E---F---G---H---I---J---M1
\ \
--F'--G'--H'--I'--J'---------M2--
M1是一个直合并;没什么特别的。
M2是合并上具有“相同”(或至少等效)更改的分支
- 问题2:此合并是否只是使用
、D
和J'
的普通三方合并M1
- 问题3:mercurial是否存储/使用了有关移植手术的额外信息来帮助合并
- 问题4:这样的流有哪些潜在问题
问题4:我认为有两个几乎相同的分支是很难看的。当您更新到
D
和graftF::J
时,Mercurial会运行许多合并。它将从以下合并开始:
M = three_way_merge(local=D, other=F, base=E)
如果我们为状态C
和d
之间的增量写+d
,那么我们从以下开始:
+d +e +f
---- C ---- D ---- E ---- F ----
将图表顺时针旋转90度,上述三向合并如下所示:
A---B---C---D---E---F---G---H---I---J
-e
.---- D
/
E
\
'---- F
+f
-e +f'
.---- D ----.
/ \
E M
\ /
'---- F ----'
+f -e'
也就是说,我们假设我们从E
开始,然后应用-E
的反方向来得到D
。我认为这是+e
的反面补丁。从E
开始,我们还使用正常的delta+F
进入状态F
。这里没有什么奇怪的-我们已经在存储库中有了所有状态(D
、E
、和F
)。这样看来,很明显我们可以合并D
和F
合并是一个“完成钻石”的问题。因此,我们发现了一种新的状态M
,它是D
和F
的混合,其中D
到M
的区别类似于+F
,而F
到M
的区别类似于-e
。看起来是这样的:
A---B---C---D---E---F---G---H---I---J
-e
.---- D
/
E
\
'---- F
+f
-e +f'
.---- D ----.
/ \
E M
\ /
'---- F ----'
+f -e'
+f
增量变为+f'
,-e
增量变为-e'
。这只是一个普通的三方合并,但效果很有趣:我们将F
应用到D
而不是E
合并后,M
到F
的第二个父级将被删除:
-e +f'
.---- D ----.
/ \
E M
\
'---- F
+f
重申:我们已将F
的“效果”复制到D
,也就是说,我们发现应用于D
的增量(+F'
)与应用于E
的效果相同。我们可以将图表拉直一点,得到:
+f'
--- D ---- M
\
'---- E ---- F
+e +f
结果是使用全三向机械将F
嫁接到D
- Q1:刚才发生了什么?所以这是怎么回事?为什么更好 A1:使用合并比使用补丁要好,因为合并机制会考虑重命名之类的事情
- Q2:此合并是否只是使用D、J'和M1的普通三方合并 A2:是的,嫁接不会改变图形的拓扑结构
- Q3:mercurial是否存储/使用了有关移植手术的额外信息来帮助合并 A3:否
- Q4:这样的流有哪些潜在问题 A4:从合并的角度来看,它应该可以正常工作。它将复制一些可能让人困惑的历史