从 TortoiseHG/Mercurial 调用时的 WinMerge 配置

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

总结:

当 TortoiseHG/Mercurial 调用 WinMerge 时,它似乎会按标准传递

/e
命令行参数。如何配置才能不传递命令行参数?

详情:

我在 Windows 7 上使用 TortoiseHG(2.10.1) 和 WinMerge (2.14.0)。 Mercurial 全局设置配置为使用 WinMerge 进行 vdiff 和合并。

调用 WinMerge 时,

/e
命令行参数表示第一次按下 Esc 键会关闭 WinMerge。

我的问题是,当我双击 WinMerge 中更改文件列表中的文件时,它会打开一个新选项卡,单击 Esc 会关闭 WinMerge,而不仅仅是单个文件比较选项卡。我希望能够按 Esc 键关闭 just 单个文件比较选项卡...据我所知,删除

/e
即可做到这一点。

不幸的是,我不知道如何获取配置文件来做到这一点。

这是我目前拥有的配置文件...

[ui]
username = {removed for StackOverflow}
merge = winmergeu

[tortoisehg]
vdiff = winmergeu
initialrevision = workingdir

[extdiff]
cmd.winmerge= C:\Program Files\WinMerge\WinMergeU.exe
opts.winmerge= /x /ub /wl

[extensions]
hgext.convert=
mercurial_keyring=
mq=
rebase = 

[web]

我还尝试更改

cmd.winmerge
opts.winmerge
以使用
winmergeu


补充:

我也刚刚尝试将

hgext.extdiff=
添加到
[extensions]
部分,以及以下内容......但仍然没有运气。

[merge-tools]
winmerge.regkey=Software\Thingamahoochie\WinMerge\
winmerge.regname=Executable
winmerge.priority=-10
winmerge.args=/x /wl /ub /dl other /dr local $other $local $output
winmerge.fixeol=True
winmerge.checkchanged=True
winmerge.gui=True
winmerge.diffargs=/r /x /ub /wl /dl '$plabel1' /dr '$clabel' $parent $child
winmerge.diff3args=
winmerge.dirdiff=True

(此信息来自此博客

configuration mercurial tortoisehg winmerge
1个回答
0
投票

编辑文件

C:\Program Files\TortoiseHg\defaultrc\MergeTools.rc

它有一个 WinMerge 部分,如下所示:

winmergeu.args=/e /x /u /wl /wr /dl local /dr other $local $output $other
winmergeu.checkchanged=True
winmergeu.diff3args=/r /e /x /u /wl /wr /dl '$plabel1' /dm '$clabel' /dr '$plabel2' $parent1 $child $parent2
winmergeu.diffargs=/r /e /x /u /wl /dl '$plabel1' /dr '$clabel' $parent $child
...

事实上,第 1、3、4 行中存在

/e
选项,这似乎分别是用于 3 路合并、3 路差异和 2 路差异的选项。

编辑后(以管理员身份),重新启动 THG Workbench。

如果您在调试正在发生的情况时遇到困难,可以使用 Process Explorer 等工具来检查传递到正在运行的 WinMerge 进程的实际命令行。 (在进程列表中细化winmerge.exe并查看其属性)。

我必须说,我不太喜欢在 Program Files 下编辑文件,但我还没有找到其他方法来做到这一点。

我已经用 THG 6.3.2 尝试过了。

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