2011-07-11 63 views
7

我用@ VonC的excellent instructions來配置我的開發系統,以便git difftool <BRANCH1> <BRANCH1>將調用WinMerge。下面是我做的:WinMerge通過git difftool不斷提示第二個文件

  1. 擺在~/.gitconfig如下:

    [DIFF]

    tool = winmerge 
    

    [difftool 「的WinMerge」]

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

    [difftool]

    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 should be displaying 2 files not one

爲什麼會發生這種情況?我在配置步驟中錯過了什麼?

P.S.當我在命令行winmerge.sh file1.c file2.c上鍵入時,WinMerge會立即顯示兩個文件,就像我期望的那樣。

更新:哦,哇,我只是注意到WinMerge的提示底部的Both paths are invalid消息(並更新了截圖以強調)。看起來這些文件並不是由difftool生成的,或者是路徑有問題。

+1

你試過這個變化嗎? http://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-visual-diff-program/4116806#4116806 – VonC

+0

@VonC還沒有,但請注意我的更新哪些點在問題出現在比winmerge.sh更早的地方。在我看來,我的系統配置的怪異對我來說......'cygwin-1.7.8-1' +'git version 1.7.4' +'Windows 7 Ultimate 64-bit' with my'$ HOME =/home「,在'/ home'上掛載爲'// sambaserver/projshare'。 – WinWin

+1

有沒有機會在更傳統的PATH上定義你的「HOME」? 'C:\ ...'有可能你的腳本只能在bash環境下工作,而不能在Windows環境下工作。 – VonC

回答

5

我解決了這個問題!

解決方案在於@ pydave的answer in the same thread提供的提示。我所要做的只是將"$1" "$2"(在winmerge.sh中)替換爲cygpath -w $1cygpath -w $2

它現在很漂亮。就像我期望的那樣。

+1

您能否在此答案中添加更多詳細信息?你的.gitconfig是什麼樣的? – dezman

+0

爲我工作,在shell腳本中執行的最終命令如下所示:「C:/ Program Files(x86)/WinMerge/WinMergeU.exe」-e -ub -dl other -dr local \'cygpath -aw $ 1 \'\'cygpath -aw $ 2 \' – user470714