如何在Mac上设置TortoiseHG以与2个父母进行差异?

时间:2016-08-18 23:45:22

标签: macos mercurial tortoisehg kdiff3

这是我的设置文件:

[extensions]
hgext.extdiff =

[extdiff]
cmd.kdiff3 = /Applications/kdiff3.app/Contents/MacOS/kdiff3

[tortoisehg]
vdiff = kdiff3

[ui]
merge = kdiff3

[merge-tools]
kdiff3.executable = /Applications/kdiff3.app/Contents/MacOS/kdiff3
kdiff3.args = $base $local $other -o $output
kdiff3.priority = 1

在合并文件上,当我按下Cmd + D时,即使List Options设置为Changed by This Commit,它也只显示本地父级的双向差异。在Windows中,当我按下Ctrl + D时,即使我没有更改设置上的任何内容,它也会显示3个不同的父母双向差异。

当我按Cmd + D时,如何在Mac上设置TortoiseHG以在合并文件上显示3-way diff?我正在使用TortoiseHG 3.9.0

1 个答案:

答案 0 :(得分:2)

一些readthedocs quotes

  

在TortoiseHg 1.0中,视觉(外部)差异基础设施是   重构。新系统使用mergetools.rc中的工具描述   检测计算机上最常见的差异工具(包括KDiff3,   它在我们的安装程序中提供)并选择最佳可用工具。

由于 1.0 ,老兄! ExtDiff对于任何合并|差异工具都不是强制性的(即使是自定义的,而kdiff3也随THG一起提供)

  

视觉差异系统将使用任何现有的extdiff 配置   它找到了。由于 extdiff不支持三向差异参数   直到最近,仍然不支持标签参数,你   通过禁用或删除任何内容,可能会获得更好的体验   extdiff配置你可能有。

手动默认KDiff3配置(来自Windows中的hgrc.d\MergeTools.rc)未完全删除所有任务正确

kdiff3.args=--auto --L1 base --L2 parent1 --L3 parent2 $base $local $other -o $output
kdiff3.regkey=Software\KDiff3
kdiff3.regkeyalt=Software\Wow6432Node\KDiff3
kdiff3.regappend=\kdiff3.exe
kdiff3.fixeol=False
kdiff3.premerge=False
kdiff3.gui=True
kdiff3.priority=-3
kdiff3.diffargs=--L1 '$plabel1' --L2 '$clabel' $parent $child
kdiff3.diff3args=--L1 '$plabel1' --L2 '$clabel' --L3 '$plabel2' $parent1 $child $parent2
kdiff3.dirdiff=True

(注意diffargs + diff3args选项)。从以上来源

  

TortoiseHg用于视觉差异的额外键:

diffargs:  the arguments to use for two-way file comparisons
diff3args: the arguments to use for three-way file comparisons
     

...   如果未配置,则diffargs的默认值为“$ parent $ child”。   diff3args的默认值为“”,表示视觉差异工具   无法进行三方比较

但是三方​​比较是合并集的必要条件,而你的错误配置是MacOS&TortoiseHG实例的麻烦来源