9

我使用@VonC 的出色说明来配置我的开发系统,以便git difftool <BRANCH1> <BRANCH1>调用 WinMerge。这是我所做的:

  1. 将以下内容放在~/.gitconfig

    [差异]

    tool = winmerge
    

    [差异工具“winmerge”]

    cmd = winmerge.sh \"$LOCAL\" \"$REMOTE\"
    

    [差异工具]

    prompt = false
    
  2. 创建了一个/usr/bin/winmerge.sh具有以下内容的:

    echo Launching WinMergeU.exe: $1 $2

    "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -ub "$1" "$2"

现在,当我尝试通过 启动 WinMerge 时git difftool <BRANCH1> <BRANCH1>,我收到了似乎是正确的参数传递:

Launching WinMergeU.exe: /tmp/21qMVb_file1.c /tmp/1ACqik_file1.c

但是,出于某种奇怪的原因,WinMerge 并没有并排显示这两个文件,而是提示输入第一个文件作为右侧,而接受第二个文件作为左侧:

[WinMerge 应该显示 2 个文件而不是一个

为什么会这样?我在配置步骤中遗漏了什么?

PS 当我在命令行上键入时winmerge.sh file1.c file2.c,WinMerge 立即并排显示这两个文件,正如我所期望的那样。

更新:哦,哇,我刚刚注意到Both paths are invalidWinMerge 提示底部的消息(并更新了屏幕截图以强调这一点)。看来这些文件根本不是由 difftool 生成的,或者路径有问题。

4

1 回答 1

6

我解决了这个问题!

解决方案在于@pydave在同一线程中的回答提供的提示。我所要做的就是将"$1" "$2"(在 winmerge.sh 中)替换为cygpath -w $1 cygpath -w $2.

它现在工作得很好。正如我所期望的那样。

于 2011-07-11T14:00:33.643 回答