Mercurial Extdiff 配置错误?

Mistake in Mercurial Extdiff Configuration?

我使用带有 Extdiff 扩展的 Mercurial 来使用 Mathworks 的 diff 工具来比较 Simulink (.slx) 文件。为了设置 Extdiff 扩展,我按照 this website 上的说明进行操作。比较 Simulink (.slx) 文件非常有效。

但是(这一点也不好)自从我设置了 extdiff 扩展后,不仅 Simulink 文件与 Mathworks 的工具进行了比较,而且经典的 Matlab 文件 (.m) 也进行了比较。

我不想这样,因为 Mathworks 的差异工具有点受限,而且 Matlab 文件(它们是纯文本文件)可以很容易地使用 Mercurial 的标准差异工具进行差异分析。

下面是我的 mercurial.ini。如您所见,它被配置为对 .slx 文件使用 extdiff。但是没有设置.m-files.

# Generated by TortoiseHg settings dialog

[tortoisehg]
confirmaddfiles = True
confirmdeletefiles = True

[ui]
username = myname

[extensions]
largefiles = 
extdiff = 

[extdiff]
# Simulink
slxdiff = matlab -wait -nodesktop -r \"disp(\'Starting visdiff, please wait (even after the prompt appears).\');visdiff(\'$parent\',\'$child\')\"

[diff-patterns]
**.slx = slxdiff

所以,问题是:

我如何需要将配置更改为使用 Mathworks 的差异工具差异 .slx 文件和使用 Mercurial 的标准差异工具差异 Matlab 文件?

我终于找到了解决办法。通过为 m 文件添加差异模式,我可以为 m 文件强制使用 kdiff。

[diff-patterns]
**.slx = slxdiff
**.m  = kdiff3

[extdiff]
# Simulink
slxdiff = matlab -wait -nodesktop -r \"disp(\'Starting visdiff, please wait  (even after the prompt appears).\');visdiff(\'$parent\',\'$child\')\"
kdiff3.args = $base $local $other -o $output