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

问题描述 投票:0回答:5

每次我执行

hg diff file.ext
时,我最终都会使用控制台差异应用程序。我想使用 Kdiff3 或 WinMerge(我使用的是 Windows)。

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

configuration mercurial diff
5个回答
72
投票

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

[extensions]
hgext.extdiff=

[extdiff]
cmd.vdiff = kdiff3

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

hg vdiff file.ext

8
投票

使用此配置

[extdiff]
cmd.kdiff3 =

我使用此命令来查看差异:

hg kdiff

这显示了包含所有已更改文件的目录树。单击一个文件即可查看该文件的差异。您也许可以在命令中添加一个文件参数以仅查看一个文件。

更多信息这里


5
投票

如果您正在寻找类似

git difftool
的内容,无需输入文件名并查看所有已更改文件的差异,请将它们添加到您的
~/.hgrc
中,然后运行
hg difftool

[extensions]
extdiff =

[extdiff]
cmd.vimdiff = vimdiff

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

或对于 Windows:

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

3
投票

我几分钟前才遇到这个问题;我刚刚安装了它并将其路径(默认位于 c:\program files\kdiff3)添加到我的系统 PATH e.v.重新启动我的窗口以选择新路径,“hg kdiff3”就起作用了。事实证明,以下内容位于我的基本“mercurial.ini”文件中,这允许 kdiff3 适用于系统上的所有 hg 存储库。

[extensions]  
hgext.extdiff =  

[extdiff]  
cmd.kdiff3 =

[merge-tools]  
kdiff3.args = $base $local $other -o $output

0
投票

我已经能够像这样“覆盖”“hg diff”命令(在 .hgrc 文件中):

[extensions]
extdiff =


[extdiff]
cmd.guidiff = /Applications/p4merge.app/Contents/MacOS/p4merge

[alias]
diff = !for file in $(hg status -n); do hg guidiff $file; done

我现在开始使用 p4merge 但该方法也应该适用于其他 diff 程序,只需更改行

cmd.guidiff
= ...

© www.soinside.com 2019 - 2024. All rights reserved.