29

在 Windows 中,我可以使用 winmerge 作为 hg 的外部差异工具,使用mercurial.ini等。
使用一些您可以在网络上找到的选项开关(我认为这是一个日本网站)无论如何,这里例如:

hg winmerge -r1 -r2

将列出 winmerge 中 rev1 和 rev2 之间的文件更改。我可以点击哪个文件来区分

但对于 bc3:

hg bcomp -r1 -r2

将使 bc3 打开一个对话框,指出找不到临时目录。

使用 bc3 和 hg 我能做的最多的是

hg bcomp -r1 -r2 myfile.cpp

这将打开 myfile.cpp 的 rev1 和 rev2 之间的差异

因此,似乎 hg+bc3 无法成功确认修订之间的所有文件更改。一次只能区分 1 个文件。
任何人都可以更好地使用 bc3 + hg 吗?

编辑:问题解决了!

从 http://www.scootersoftware.com/support.php?zz=kb_vcs.php>scooter 支持页面获得解决方案。我必须使用bcompare而不是bcomp 这是我的 mercurial.ini 的片段

[扩展]
hgext.win32text =

;mhd 添加
hgext.extdiff =

;mhd 为 bc 添加
[扩展差异]
cmd.bc3 = bcompare
opts.bc3 = /ro

;mhd 为 winmerge 添加
;[扩展差异]
;cmd.winmerge = WinMergeU
;opts.winmerge = /r /e /x /ub
4

9 回答 9

31

Beyond-Compare-3 是一个了不起的工具。我建议对设置进行一些调整:

[extensions]
extdiff =

[extdiff]
cmd.bcomp = C:\Program Files\Beyond Compare 3\BCompare.exe
opts.bcomp = /leftreadonly

[merge-tools]
bcomp.executable = C:\Program Files\Beyond Compare 3\BComp
bcomp.args = /leftreadonly /centerreadonly $local $other $base $output
bcomp.priority = 1

[ui]
merge = bcomp

[tortoisehg]
authorcolor = True
vdiff = bcomp
于 2009-06-21T08:55:39.970 回答
12

我个人发现最好的 Beyond Compare 配置可以在 Mercurialmergetools.rc file文件中找到:

[merge-tools]
....
; Windows version of Beyond Compare
beyondcompare3.args=$local $other $base $output /ro /lefttitle=local /centertitle=base /righttitle=other /automerge /reviewconflicts /solo
beyondcompare3.regkey=Software\Scooter Software\Beyond Compare 3
beyondcompare3.regname=ExePath
beyondcompare3.gui=True
beyondcompare3.priority=-2
beyondcompare3.diffargs=/lro /lefttitle='$plabel1' /righttitle='$clabel' /solo /expandall $parent $child

我还发现不要在部分中包含 Beyond Compare很重要,extdiff因此它将使用带有参数beyondcompare3的部分。(我在和中都指定了)merge-toolsdiffargsbeyondcompare3ui.mergetortoisehg.vdiff

于 2010-10-08T18:54:48.580 回答
3

I had to add the following to make it work on my machine:

[extensions]
extdiff =

[extdiff]
cmd.bc3 = C:\Program Files\Beyond Compare 3\BCompare.exe
opts.bc3 = /ro
于 2009-01-31T22:02:22.377 回答
3

如果您不断从 BC 收到此“文件夹不可用”错误(当我同时打开多个 BC 实例时,我确实这样做了),请尝试/solo在命令行中添加选项,即:

[extdiff]
cmd.bcomp = C:\Program Files\Beyond Compare 3\BCompare.exe
opts.bcomp = /leftreadonly /solo

资料来源:踏板车软件支持论坛

于 2010-04-21T09:28:33.057 回答
3

从 Scooter Software 支持页面查看此页面- 它还包括大多数版本控制系统的设置 - 我的书签列表中的一个!

片段:

要配置 Mercurial,您需要编辑文件 %USERPROFILE%\Mercurial.ini 或 $HOME/.hgrc。添加以下行,如果它们已经存在,则使用现有的 INI 部分:

差异

[extensions] extdiff =

[extdiff] 
cmd.bcomp = C:\Program Files\Beyond Compare 3\BCompare.exe
opts.bcomp = /ro

[tortoisehg] vdiff = bcomp 

设置完成后,您可以使用命令行比较修订版

hg bcomp -r <rev1> [-r <rev2>] [<filename>]

三向合并 (v3 Pro)

[merge-tools] 
bcomp.executable = C:\Program Files\Beyond Compare 3\BComp 
bcomp.args = $local $other
$base $output bcomp.priority = 1
bcomp.premerge = True bcomp.gui = True

[ui] merge = bcomp
于 2010-07-01T14:26:01.577 回答
1

我尝试了当时给出的建议,但没有一个奏效。

我发现了以下作品:

  1. 添加超越比较安装目录到你的系统path
  2. 打开全局设置并将差异工具设置为bcompare

现在尝试一个差异 - 超越比较!

于 2010-07-27T19:43:33.217 回答
1

到目前为止给出的所有答案都是针对 Windows 的。这是我为使用 Linux 的用户的配置。

差异

[extensions]
extdiff =

[extdiff]
cmd.bcomp = bcompare
opts.bcomp = -ro1

4 路合并 (v3 Pro)

[merge-tools]
bcomp.executable = bcompare
bcomp.args = -title1='First Parent' -title2='Second Parent' -title3='Common Ancestor' -title4='Output' -ro1 -ro2 -ro3 $local $other $base $output
bcomp.premerge = True
bcomp.gui = True

-ro#:禁用指定侧的编辑

-title#=<title>:在路径编辑中显示描述而不是文件名

#字符:1=左,2=右,3=中,4=输出

如需更多选项bcompare,只需bcompare -help在控制台中执行即可。

于 2011-04-22T19:20:25.753 回答
0

如果您使用 TortoiseHg,您可以通过选择 File -> Settings 将合并工具设置为 Beyond Compare,然后在 TortoiseHg 选项上,选择 Visual Diff Tool 和 Three-way Merge Tool。此设置也会影响通过命令行设置的合并。

于 2013-07-05T15:12:36.680 回答
0

如果您无法正确解析配置,请注意任何变量或部分名称的任何空格都会导致配置解析不正确。我一直在复制和粘贴不同的配置并继续出错。结果只是在许多变量之前添加了空格,导致它无法解析。

于 2011-07-22T13:49:36.970 回答