【问题标题】:WinMerge via git difftool keeps prompting for second fileWinMerge 通过 git difftool 不断提示输入第二个文件
【发布时间】:2011-07-11 13:16:59
【问题描述】:

我使用@VonC 的excellent instructions 来配置我的开发系统,以便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"

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

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

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

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

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

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

【问题讨论】:

  • 你试过这个变体吗? stackoverflow.com/questions/255202/…
  • @VonC 还没有,但请注意我的更新指出问题早于winmerge.sh。在我看来,我的系统配置的怪异对我不利...cygwin-1.7.8-1 + git version 1.7.4 + Windows 7 Ultimate 64-bit 与我的$HOME=/home 一起安装为//sambaserver/projshare/home 上。
  • 有没有机会在更传统的路径上定义您的HOMEC:\... 很可能您的脚本只能在 bash 环境中工作,而不能在 Windows 环境中工作。
  • @VonC 我找到了解决方案! :)) 见下文。

标签: git winmerge difftool


【解决方案1】:

我解决了这个问题!

解决方案在于@pydave 的answer in the same thread 提供的提示。我所要做的就是将"$1" "$2"(在winmerge.sh 中)替换为cygpath -w $1cygpath -w $2

现在效果很好。正如我所料。

【讨论】:

  • 您可以在此答案中添加更多详细信息吗?你的 .gitconfig 是什么样的?
  • 为我工作,在 shell 脚本中执行的最终命令是这样的:“C:/Program Files (x86)/WinMerge/WinMergeU.exe” -e -ub -dl other -dr本地 `cygpath -aw $1` `cygpath -aw $2`
猜你喜欢
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多