WinMerge通过git difftool不断提示输入第二个文件

Win*_*Win 7 git winmerge difftool

我使用@ VonC的优秀指令来配置我的开发系统,以便git difftool <BRANCH1> <BRANCH1>调用WinMerge.这是我做的:

  1. 放置以下内容~/.gitconfig:

    [DIFF]

    tool = winmerge
    
    Run Code Online (Sandbox Code Playgroud)

    [difftool"winmerge"]

    cmd = winmerge.sh \"$LOCAL\" \"$REMOTE\"
    
    Run Code Online (Sandbox Code Playgroud)

    [difftool]

    prompt = false
    
    Run Code Online (Sandbox Code Playgroud)
  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生成的,或者路径有问题.

Win*_*Win 5

我解决了这个问题!

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

它现在很漂亮.正如我所料.

  • 您能否在此答案中添加更多详细信息?你的 .gitconfig 是什么样的? (2认同)