Mercurial extdiff一次一个

时间:2011-09-05 20:50:58

标签: mercurial diff

我使用winmerge作为我的extdiff工具,如下所示:

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

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

1 个答案:

答案 0 :(得分:5)

Mercurial: The Definitive Guide中解释的一样,extdiff创建了源树的两个快照,并在它们上调用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

希望这有帮助!