Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial extdiff一次一个_Mercurial_Diff - Fatal编程技术网

Mercurial extdiff一次一个

Mercurial extdiff一次一个,mercurial,diff,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中获得相同的行为吗?如中所述,extdiff创建源树的两个快照,并对它们调用

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

[extdiff]
cmd.winmerge = C:\Program Files\WinMerge\WinMergeU.exe
opts.winmerge = /e /x /ub /wl
问题是,当我运行
hg winmerge
时,它似乎一次发送所有文件,而例如在Git中,当我执行
diff
时,它调用difftool,每次只修改一个文件。我可以在Mercurial中获得相同的行为吗?

如中所述,extdiff创建源树的两个快照,并对它们调用diff工具。您的工具必须支持directory diff才能工作,但正如前面所解释的,您可以使用脚本来解决这个问题

这本书里有。它基本上接受这两个目录,并对每个文件调用
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

希望这有帮助

“一次处理所有文件”是什么意思?extdiff创建修改的快照,并将其作为目录发送到diff工具。也许可以尝试将
/r
选项添加到winmerge…@Krtek是否有办法将extdiff配置为不将修改作为目录发送,而是作为单独的文件发送?当然没有配置选项,但我添加了一个包含中间脚本的答案来完成此工作。。。