Mercurial extdiff一次一个

Geo*_*Geo 3 diff mercurial

我使用winmerge作为我的extdiff工具,像这样:

[extdiff]
cmd.winmerge = C:\Program Files\WinMerge\WinMergeU.exe
opts.winmerge = /e /x /ub /wl
Run Code Online (Sandbox Code Playgroud)

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

krt*_*tek 5

就像Mercurial:The Definitive Guide中所解释的那样,extdiff创建了源树的两个快照,并在它们上调用diff工具.你的工具必须支持目录差异才能工作,但是如上所述,你可以使用脚本来解决这个问题.

这个示例脚本在本书中给出.它基本上采用两个目录并interdiff在每个文件上调用该实用程序.

在您的情况下,您可以轻松地调整脚本来调用winmerge.只需修改第41行:

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

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

 [extdiff]
 cmd.winmerge = C:\Path\To\My\Script\hg-winmerge
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 !