可以更改Mercurial中的默认差异工具吗?

Mat*_*ías 62 diff configuration mercurial

每次我做一个hg diff file.ext我最终使用控制台差异应用程序.我想使用Kdiff3或WinMerge(我正在使用Windows).

有办法改变吗?我在Mercurial文档中找不到引用(我不是在谈论合并!).

Mat*_*ías 68

我使用Mercurial内置扩展程序解决了这个问题...我只需要将以下行添加到Mercurial.ini(在Mercurial文件夹上):

[extensions]
hgext.extdiff=

[extdiff]
cmd.vdiff = kdiff3
Run Code Online (Sandbox Code Playgroud)

当我想使用kdiff3而不是diff我只需要使用:

hg vdiff file.ext
Run Code Online (Sandbox Code Playgroud)

  • 此外,您可以将选项传递给difftool,例如.`[extdiff] opts.vdiff = 2>/dev/null` (2认同)
  • 这个答案(以及目前为止的其他答案)使另一个差异工具可用,但不会更改“默认差异工具”。即,当你调用 `hg diff` 时,它不会改变使用的工具——或者更重要的是,当你使用 `hg log -p` 来查看整个变更集集合时。我很想找到一种方法来真正更改默认设置?(例如,有时在审查分支时能够使用基于单词的差异。) (2认同)

Mar*_*eon 8

有了这个配置

[extdiff]
cmd.kdiff3 =
Run Code Online (Sandbox Code Playgroud)

我用这个命令来看看差异:

hg kdiff
Run Code Online (Sandbox Code Playgroud)

这显示了一个目录树,其中包含所有已更改的文件.单击文件以查看文件的差异.您可以向命令添加文件参数以仅查看一个文件.

更多信息在这里.


mus*_*usa 5

如果您正在寻找这样的事情git difftool,你不需要输入文件名,并请参见diff所有修改过的文件,这些添加到您~/.hgrc,并运行hg difftool

[extensions]
extdiff =

[extdiff]
cmd.vimdiff = vimdiff

[alias]
difftool = !for file in $(hg status -n); do hg vimdiff $file; done
Run Code Online (Sandbox Code Playgroud)

或对于窗户:

[alias]
difftool = !FOR /f %F IN ('hg status -nmar') DO hg vimdiff %F
Run Code Online (Sandbox Code Playgroud)