使用Beyond Compare作为Git的Diff工具 - 如何使用命令行开关,例如:/expandall

4

我的git全局配置文件 C:\Users\.gitconfig 如下:

[diff]
tool = bc3

[difftool "bc3"]
path = C:/Program Files (x86)/Beyond Compare 3/BCompare.exe
cmd = \"C:/Program Files (x86)/Beyond Compare 3/BCompare.exe\" \"$LOCAL\" \"$REMOTE\"

我正在使用Windows 7 x64操作系统,我有Beyond Compare Pro 3.3.5版本。
我希望在调用BCompare.exe时传递一个或多个参数。我尝试过这样做,但它不起作用:
cmd = \"C:/Program Files (x86)/Beyond Compare 3/BCompare.exe\ /expandall" \"$LOCAL\" \"$REMOTE\"

git difftool --dir-diff dev master

我希望您能用Beyond Compare工具比较开发版和主分支的目录,并展开其中所有文件夹。这与Beyond Compare GUI中的对应按钮“展开全部”相同,它会在左右两个窗格中展开所有文件夹。
我可能需要传递两个参数:/solo /expandall
谢谢, Rad

1
你已经查看了这个页面吗?http://www.scootersoftware.com/support.php?zz=kb_vcs#gitwindows - 1615903
是的。它没有讨论如何整合开关。我的比较函数可以工作,但我想要一些开关提供的额外功能。 - Rad
FYI,忽略文件结构可能作为默认行为在bc中表现更好,而不是展开所有——它允许使用ctrl-m和ctrl-shift-m在文件之间跳转,同时不受单个文件夹的限制。 - bushed
1个回答

13
使用表单-expandall代替/expandall,请注意-solo必须的(下面进行解释)。
[diff]
    tool = bc3
[difftool "bc3"]
    cmd = \"E:/PortApps/Beyond Compare 3/bcomp.exe\" -expandall -solo \"$LOCAL\" \"$REMOTE\"

对我来说,以上内容在Windows XP SP3(x86 32位)上使用Beyond Compare 3.3.8(标准版)和Git For Windows 1.8.4(msysgit)有效。

注释

  1. 如果提供了cmd,则发现path设置是不必要的。

  2. 根据BC技术支持,您可能需要使用BCompare.exe而不是bcomp.exe,但我发现两者都可以正常工作。

Solo解释

-solo选项使比较在新窗口中打开。然后,difftool将等待您关闭它,然后再删除正在比较的临时文件。

如果没有此选项,则如果您已经打开了Beyond Compare窗口,则比较将显示在其中一个新选项卡中。这似乎很方便,但实际上不起作用,因为您对bcomp.exe的调用仅将任务委派给已经运行的应用程序,然后退出,difftool将立即删除要比较的文件。


太好了,成功了。谢谢。我正在使用带有Git支持的VS 2013,并且我可以复制CommitID并将其粘贴到我的powershell posh-git中进行比较,如下所示: git difftool --dir-diff master 173dc827230751ef2cf0dcaae8229722506968ba 或者 git difftool --dir-diff dev master - Rad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接