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

qua*_*cle 20 diff winmerge mercurial

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

hg diff
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,还是我坚持使用 Mercurial 的内部差异工具?

csc*_*hol 24

来自TortoiseHg 常见问题解答

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

[扩展]
extdiff =

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

现在运行全局设置工具。在 TortoiseHg 选项卡上,您应该会在 Visual Diff 命令的下拉列表中看到 winmerge。选择 winmerge,应用,然后关闭。

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

乔尔还提供了解决方案在此情况下,你在Cygwin下运行水银。

此处对 WinMerge 命令行参数的说明。概括:

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


小智 7

这就是它对我的工作方式——除了 tortoisehg 之外的纯 mercurial 命令行

一、编辑文件(64位windows下)

C:\Program Files (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
Run Code Online (Sandbox Code Playgroud)

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