假设myfile
在两个存储库(A和B)中被修改。在A中,我们执行了hg pull ../B
来获取这些变更集:
A1 - A2 - A3 - A4 - A5
\
B3 - B4
由于我们有两个头(A5,B4),我们做hg merge
。
现在如果有冲突,Mercurial会启动我们的合并工具(Beyond Compare)并获得三个视图:left是local,center是parent,右边是'other'。鉴于我们的结构,左(本地)是A5,中(父)是A2,右(其他)是B4吗?
其次,Mercurial用于确定需要合并的逻辑究竟是什么?它是否看到myfile
有两个版本没有任何孩子?它究竟是如何确定A2是父母的?
答案 0 :(得分:5)
合并工具使用参数列表args运行,扩展了以下变量:
$output
扩展到已包含第一个父级版本的现有文件 - 这也是合并结果最终/必须结束的位置$local
扩展为file.orig,它作为工作目录版本中的文件副本创建 - 因此它包含来自第一个父项的未合并版本- $ base扩展为使用共同祖先修订版(see
hg debugancestor
)中的版本创建的/tmp/file~base.*
- $ other扩展为
/tmp/file~other.*
,这是使用新的第二个父版本中的版本创建的,第一个父版本与第一个父版本合并
(是的,“左(本地)是A5,中(父)是A2,右(其他)是B4”)
(参见“performing the merge”)