Git и WinMerge (msysgit)

Я читал о миллионе вопросов и ответов по этой самой теме и строго следовал всем инструкциям. Но у меня все еще возникают головные боли, пытаясь настроить Git для сравнения и слияния с помощью WinMerge.

Я сделал следующие шаги, используя терминал Git:

git config --global diff.tool winmerge
git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

Я также создал сценарий в каталоге, включенном в мою переменную PATH, который гласит:

#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" git /e /u /dl "Base" /dr "Mine" "$1" "$2""

Когда я выполняю

git mergetool

В терминале Git я вижу:

Merging:
first.txt

Normal merge conflict for 'first.txt':
  {local}: modified
  {remote}: modified
Launching WinMergeU.exe:

Мне кажется, что переменные $LOCAL и $REMOTE ничего не передают в winmerge.sh скрипт. Что я здесь делаю не так? Я должен предположить, что это в части конфигурации.


person Anthony Compton    schedule 28.10.2010    source источник
comment
Я обновил свой ответ, добавив правильные ссылки, а также некоторые альтернативы winmerge.   -  person VonC    schedule 29.10.2010


Ответы (1)


По сравнению с моим предыдущим ответом (или этот, или тот), ваши шаги включают дополнительный двойные кавычки в конце winmerge.sh скрипта

    #!/bin/sh
    echo Launching WinMergeU.exe: $1 $2
    "C:/Program Files/WinMerge/WinMergeU.exe" 
      git /e /u /dl "Base" /dr "Mine" "$1" "$2""
                                               ^
                                               |
                                    (this shouldn't be here)

При этом эти ответы касались difftool, использующего winmerge, который не поддерживает 3-стороннее слияние (есть только локальное и удаленное, нет база).

Для настоящего инструмента слияния я бы порекомендовал kdiff3 (например, "Возможно ли, чтобы git-merge игнорировать различия в конце строки? ") или araxis (как описано в "Как установить Araxis в качестве инструмента сравнения / слияния для MSYS git? "), где вы можете увидеть используемые три переменных (локальную, удаленную и базовую).

person VonC    schedule 28.10.2010
comment
@erjiang: исправлены ссылки и добавлен важный комментарий об инструментах трехстороннего слияния. - person VonC; 29.10.2010