如何使用 WinMerge 作为 Mercurial 的 Diff 工具

如何使用 WinMerge 作为 Mercurial 的 Diff 工具

我正在使用 Mercurial 分布式版本控制系统,我想知道如何配置它以使用 WinMerge 而不是其自己的内部 diff 工具。我已经将 WinMerge 作为合并工具,但我希望 Mercurial 在输入以下内容时使用 WinMerge:

hg diff

有什么办法可以做到这一点,还是我只能使用 Mercurial 的内部差异工具?

答案1

来自TortoiseHg 常见问题解答

将这些行添加到您的个人 Mercurial.ini 文件中

[扩展]
外部差异 =

[外部差异]
cmd.winmerge = C:\Program Files\WinMerge\WinMergeU.exe
opts.winmerge = /e /x /u /wl

现在运行 Global Settings 工具。在 TortoiseHg 选项卡上,您应该会在 Visual Diff Command 的下拉列表中看到 winmerge。选择 winmerge,应用,然后关闭。

同样的办法可以用来添加几乎任何可视化差异工具,但请注意,如果要由 TortoiseHg 使用,您的差异工具必须能够支持目录差异,除非您使用的是 0.8 或更高版本。

Joel 还提供了解决方案这里如果你在 Cygwin 下运行 Mercurial。

WinMerge 命令行参数的解释在这里。 概括:

  • /e只需按一下 Esc 键即可关闭 WinMerge
  • /x 开始比较相同文件时关闭 WinMerge(显示信息对话框后)
  • /u阻止 WinMerge 将任一路径(左或右)添加到最近使用 (MRU) 列表中
  • /wl以只读方式打开左侧

答案2

它对我而言就是这样的——除了 tortoisehg 之外的纯 mercurial 命令行

首先,编辑文件(在64位Windows下)

C:\Program 文件(x86)\Mercurial\Mercurial.ini

[extensions]
; must uncomment this line
extdiff =

[extdiff]
; i'm using winmerge unicode version
cmd.winmerge = C:\Program Files (x86)\WinMerge\WinMergeU.exe
; it explains winmerge command line parameters here: http://winmerge.org/docs/manual/CommandLine.html
opts.winmerge = /r /e /x /u /wl

然后,您可以使用“hg winmerge ...”而不是“hg diff ...”

答案3

好吧,之前给出的答案并没有给我带来预期的效果。它们不允许进行修订差异和就地编辑(我的意思是与 TortoiseSVN 开箱即用的功能相同)。为此,我在 mercurial.ini 中额外添加了此部分:

[merge-tools]
winmerge.regkey=Software\Thingamahoochie\WinMerge\
winmerge.regname=Executable
winmerge.priority=-10
winmerge.args=/e /x /wl /ub /dl other /dr local $other $local $output
winmerge.fixeol=True
winmerge.checkchanged=True
winmerge.gui=True
winmerge.diffargs=/r /e /x /ub /wl /dl '$plabel1' /dr '$clabel' $parent $child
winmerge.diff3args=
winmerge.dirdiff=True

这取自http://blog.stevehorn.cc/blog/easy-mercurial-visual-diff-between-two.html

相关内容