4
假设myfile
在两个存储库(A和B)中被修改。在一个我们做的hg pull ../B
这会让我们这些变更:了解Mercurial合并逻辑
A1 - A2 - A3 - A4 - A5
\
B3 - B4
因为我们有两个头(A5,B4),我们做一个hg merge
。
现在如果有冲突,Mercurial启动我们的合并工具(Beyond Compare),我们得到三个视图:左边是本地,中心是父级,右边是“其他”。考虑到我们的结构,将剩下(本地)为A5,中间(父)为A2,右(其他)为B4?其次,Mercurial用来确定需要合并的逻辑究竟是什么?它是否看到没有任何孩子的myfile
有两个版本?它究竟如何确定A2是父母?
谢谢。 Mercurial将如何确切知道哪些文件需要合并?在我的例子中,它会合并变更集'B3'和'B4'中的所有修改过的文件吗?如果一个文件在'B4'和'A4'中被修改,共同的父母是'A2',那么Mercurial会用什么逻辑来判断?直观地说,人们可以通过查看图表来说明这一点,但我很好奇Mercurial的逻辑究竟是什么决定了这一点。 – 2011-04-08 11:54:56
@Marcus:如果Mercurial不同(并且需要合并),Mercurial只需要比较目录或文件SHA1即可:请参阅http://hgbook.red-bean.com/read/a-tour-of-mercurial-merging -work.html#toggle_id353585。 Mercurial将从父变更集返回父变更集,从两个“HEAD”开始合并,直到找到共同的祖先。 – VonC 2011-04-08 12:11:38