【问题标题】:Mercurial extdiff one at a timeMercurial extdiff 一次一个
【发布时间】:2011-11-10 21:00:26
【问题描述】:

我正在使用 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 工具。也许尝试将 /r 选项添加到 winmerge...
  • @Krtek 是否可以通过某种方式将 extdiff 配置为不将修改作为目录发送,而是作为单独的文件发送?
  • AFAIK 没有配置选项,但我添加了一个涉及中间脚本的答案来完成这项工作......

标签: mercurial diff


【解决方案1】:

就像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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 2011-02-21
    • 2012-07-26
    • 1970-01-01
    相关资源
    最近更新 更多