"模棱两可的合并 - 选择m动作" - 这是什么意思?

时间:2016-08-23 13:55:49

标签: version-control mercurial dvcs

我尝试合并:

hg me -r <some-revision>

并获得:

<some-file>: ambiguous merge - picked m action

这是什么意思?

1 个答案:

答案 0 :(得分:7)

当处理“困难”合并时,此消息来自合并代码,其中提交图中没有“最佳”最低共同祖先(LCA)提交。 (相反,至少有两个LCA - 或者在这种情况下恰好两个,因为获得两个以上是很棘手的,我认为Mercurial不会。)如果你运行了详细或调试消息,你会看到几条消息“投标合并”过程。在https://www.mercurial-scm.org/wiki/BidMerge中描述了出价合并(在我看来并不是很好)。

您看到的消息表明,出价合并算法未能成功选择“最佳祖先”,而且Mercurial回归其“选择一个(明显的)随机的祖先”方法。

缺乏“最佳LCA”源于“交叉融合”,您将分支A合并到B,将分支B合并到A.如果没有这样的合并,总有一个最好的LCA,如果有任何LCA的话。这并不意味着你必须避免这种合并,但它确实意味着你应该意识到如果你制作它们,你可能会遇到模糊的合并基础问题。