2011-07-11 6 views
7

Użyłem @ VonC's excellent instructions do skonfigurowania mojego systemu programistycznego, aby git difftool <BRANCH1> <BRANCH1> wywoływał WinMerge. Oto co zrobiłem:WinMerge za pośrednictwem git difftool wyświetla monit o podanie drugiego pliku

  1. umieścił następujący w ~/.gitconfig:

    [edycja]

    tool = winmerge 
    

    [difftool "WinMerge"]

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

    [difftool]

    prompt = false 
    
  2. Utworzony /usr/bin/winmerge.sh o następującej treści:

    echo Launching WinMergeU.exe: $1 $2

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

Teraz, gdy próbuję uruchomić WinMerge poprzez git difftool <BRANCH1> <BRANCH1>, odbieram to, co wydaje się być poprawny parametr mijania :

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

Jednak z jakiegoś dziwnego powodu, zamiast WinMerge wyświetlającego dwa pliki obok siebie, prosi o podanie pierwszego pliku pierwszy, z drugim plikiem akceptowanym jako lewy:

[WinMerge should be displaying 2 files not one

Dlaczego tak się dzieje? Czego mi brakowało w etapach konfiguracji?

P.S. Kiedy wpisuję w linii poleceń winmerge.sh file1.c file2.c, WinMerge natychmiast wyświetla dwa pliki obok siebie, tak jak się spodziewałem.

UPDATE: Oh wow, po prostu zauważyłem komunikat Both paths are invalid u dołu wierszu WinMerge (oraz zaktualizowane zrzut ekranu, aby podkreślić, że). Wydaje się, że te pliki po prostu nie zostały wygenerowane przez difftool lub coś jest nie tak ze ścieżką.

+1

Czy próbowałeś tej wersji? http://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-visual-diff-program/4116806#4116806 – VonC

+0

@VonC Jeszcze nie, ale zapamiętaj moją aktualizację, która wskazuje na problem jest we wcześniejszym punkcie niż 'winmerge.sh'. Wydaje mi się, że dziwność mojej konfiguracji systemu działa przeciwko mnie ... 'cygwin-1.7.8-1''' git version 1.7.4' + 'Windows 7 Ultimate 64-bit' z moim' $ HOME =/home', który jest zamontowany jako '// sambaserver/projshare' na'/home'. – WinWin

+1

jest szansa na zdefiniowanie 'HOME' na bardziej konwencjonalnej ścieżce PATH? 'C: \ ...' Istnieje szansa, że ​​twój skrypt działa tylko w środowisku bash, a nie w Windows. – VonC

Odpowiedz

5

Rozwiązałem problem!

Rozwiązanie leży w podpowiedzi dostarczonej przez @ pydave's answer in the same thread. Wszystko, co musiałem zrobić, to zastąpić "$1" "$2" (w winmerge.sh) z cygpath -w $1cygpath -w $2.

Działa teraz pięknie. Tak jak się spodziewałam.

+1

Czy możesz dodać więcej szczegółów do tej odpowiedzi? Jak wygląda twój .gitconfig? – dezman

+0

Do pracy dla mnie ostateczne polecenie do wykonania w skrypcie powłoki było jak: "C:/Program Files (x86) /WinMerge/WinMergeU.exe" -e -ub -dl inne -dr lokalne \ 'cygpath -aw $ 1 \ '\' cygpath -aw $ 2 \ ' – user470714

Powiązane problemy