我将winmerge用作extdiff工具,如下所示:

[extdiff]
cmd.winmerge = C:\Program Files\WinMerge\WinMergeU.exe
opts.winmerge = /e /x /ub /wl


问题是,当我运行hg winmerge时,它似乎一次发送了所有文件,而在Git中,例如,当我执行diff时,它一次调用了一个修改过的文件的difftool。我可以在Mercurial中获得相同的行为吗?

最佳答案

Mercurial: The Definitive Guide中所述,extdiff创建源树的两个快照,并在它们上调用diff工具。您必须使用工具目录diff才能使其正常工作,但是如前所述,您可以使用脚本来解决此问题。

This example script在书中给出。它基本上采用两个目录,并在每个文件上调用interdiff实用程序。

根据您的情况,您可以轻松地使脚本适应以调用winmerge。只需修改第41行:

if os.system('winmerge /e /x /ub /wl "%s" "%s"' % (name(sys.argv[1], f),


假设您创建了一个hg-winmerge脚本,然后可以像这样配置extdiff:

 [extdiff]
 cmd.winmerge = C:\Path\To\My\Script\hg-winmerge


希望这可以帮助 !

08-27 08:07