WinMerge через git difftool продолжает запрашивать второй файл - PullRequest
7 голосов
/ 11 июля 2011

Я использовал @ 1001 * отличные инструкции @ 100 * * VonC для настройки моей системы разработки так, чтобы git difftool <BRANCH1> <BRANCH1> вызывал WinMerge.Вот что я сделал:

  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"

Теперь, когда я пытаюсь запустить WinMerge через git difftool <BRANCH1> <BRANCH1>, я получаю, как представляется, правильную передачу параметров:

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

Но, по какой-то странной причине, вместо того, чтобы WinMerge отображал два файла рядом друг с другом, он предлагает ввести файл first справа, второй файл принимается каклевая сторона:

[WinMerge should be displaying 2 files not one

Почему это происходит?Что я пропустил на этапах настройки?

PS Когда я набираю в командной строке winmerge.sh file1.c file2.c, WinMerge немедленно отображает два файла рядом, как я и ожидал.

ОБНОВЛЕНИЕ: Ого, я только что заметил сообщение Both paths are invalid в нижней части подсказки WinMerge (и обновил скриншот, чтобы подчеркнуть это).Похоже, что эти файлы просто не были сгенерированы difftool или что-то не так с путем.

1 Ответ

5 голосов
/ 11 июля 2011

Я решил проблему!

Решение заключается в подсказке, предоставленной ответом @ pydave в той же теме .Все, что мне нужно было сделать, это заменить "$1" "$2" (в winmerge.sh) на cygpath -w $1 cygpath -w $2.

Теперь это прекрасно работает.Как я и ожидал.

...