与MercurialEclipse合并具有在命令行合并时自动解决的冲突

时间:2011-01-10 12:26:15

标签: java eclipse version-control mercurial dvcs

我正在玩Mercurial以确定它是否适合在我们公司使用。其中一个重要的卖点是合并能力。所以我一直在玩创建分支并将它们合并回默认行。测试只涉及在一个分支中向单个Java文件添加新方法(methodA),并在另一个分支中的同一文件中的完全不同的位置添加不同的方法(methodB)。

当我第一次使用团队在Eclipse中尝试它时,>合并选项我发现第一次合并工作正常(即它添加了方法A)。当我尝试合并第二个分支时,它告诉我必须解决冲突。这是非常不幸的,因为我认为这种简单的合并恰好是Mercurial应该轻松处理的事情?

我使用命令行尝试了完全相同的测试,这次它工作正常,即两个合并都成功,无需解决冲突。查看eclipse中的控制台输出,它使用以下命令执行合并:

hg -y merge --config ui.merge=internal:fail -r 611ca2784593525cdafd3082b17d3310037a5d58 -f

然而,当我自己从命令行运行它时,我只是这样做:

hg merge -r 1234

是否使用合并策略'internal:fail'导致这种情况发生在Eclipse中?如果是这样,是否可以更改默认行为,使其工作方式与命令行相同?

1 个答案:

答案 0 :(得分:8)

internal:fail告诉Mercurial不要尝试合并任何东西。有关详细信息,请参阅the mercurial wiki

似乎曾经为mercurial编写Eclipse插件的人觉得他们可以更好地控制eclipse中的合并,让Mercurial自动无法合并所有内容然后在Eclipse中进行合并,并且可能会在合并文件时调用hg resolve --mark ...

从Mercurial命令行中,您获得了处理普通合并的premerge行为,然后如果仍存在冲突,则从MergeToolConfiguration调用具有最高优先级的工具文件类型,可在您的本地系统上使用。