将 Beyond Compare 用作合并程序的推荐 Mercurial 配置如下所示:
[merge-tools]
bcomp.executable = C:\Program Files\Beyond Compare 3\BComp.exe
bcomp.args = $local $other $base $output
bcomp.priority = 1
bcomp.premerge = True
bcomp.gui = True
[ui]
merge = bcomp
根据Mercurial docs on merge tools,默认情况下有一个binary
选项False
。 当 时binary=True
,它告诉 Mercurial 该工具可以合并二进制文件。 然而,当我打开该选项时,Mercurial 仍然不会让 Beyond Compare 合并 XML 文件。
更多的研究会出现这个premerge
选项。 时premerge=True
,Mercurial先内部合并,只有在有冲突需要解决时才使用合并工具。 不幸的是,Mercurial 总是无法合并二进制文件。当预合并失败时,Mercurial 会停止对该文件的合并,并且永远不会启动合并工具。
那么,解决方案似乎也将premerge
选项设置为False
. 不幸的是,预合并非常有用,因为在 90% 的情况下,没有任何冲突,并且永远不会看到您的合并工具。将 premerge 设置为False
,每次需要合并时,Beyond Compare 都会打开。这变得非常乏味。
为了解决这个问题,我创建了第二个 Beyond Compare 合并工具配置,用于合并二进制文件。我将其优先级设置为低于默认bcomp
工具,因此仅在主bcomp
工具失败时才调用它,这通常仅适用于二进制文件。我将这些行添加到merge-tools
我的 mercurial.ini 文件的部分:
bcompbin.executable = C:\Program Files (x86)\Beyond Compare 3\BCompare.exe
bcompbin.args = $local $other $base $output
bcompbin.gui = True
bcompbin.premerge = False
bcompbin.binary = True
这样做的副作用之一是 Beyond Compare 将启动以合并它无法处理的二进制文件。我还没遇到过这种情况,不知道怎么处理。我可能只是暂时注释掉我的bcompbin
合并工具。