Как использовать Winmerge с расширениями Git?

Я использую Расширения Git и он предварительно устанавливает и настраивает KDiff как инструмент diff для решения конфликтов слияния. Я очень люблю Winmerge, хотя и хотел бы заменить KDiff на Winmerge.

в настройках расширений Git есть настройки для изменения Mergetool, но я не могу понять, какой синтаксис я должен использовать и почему. Кажется, есть 4 переменные: $BASE, $LOCAL, $REMOTE, $MERGED. Кажется, я должен передать их WinMergeU.exe, но с какие параметры командной строки?

Я пытался найти это несколько раз, но нет ответа, который действительно работает.

5 ответов


обзор
Ниже приведены инструкции по настройке Git Version Control, чтобы вы могли использовать лучший набор инструментов, чем установка по умолчанию. Установка требует, чтобы расширения GIT уже установлены и включает в себя настройку Winmerge в расширениях GIT.

установка
Пройдите все подсказки и установите в каталог по умолчанию для Winmerge.

настройка Winmerge в версии GIT Контроль
Откройте новый документ в текстовом редакторе. Скопируйте / вставьте следующее и сохраните документ как "wMerge.sh-за твое ...C:\Program каталог файлов (x86)\Git\bin\".

echo Launching WinMerge:   "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "" ""

перейти к каталогу" Пользователи->Имя пользователя " и найдите .файл gitconfig хранит настройки. Откройте его в своем любимом редакторе скопируйте / вставьте следующий код и сохраните:

[user]
    name = enter your name
    email = youremail@yourdomain.com
[core]
    autocrlf = false
[merge]
    tool = winmerge
[mergetool "winmerge"]
    cmd = wMerge.sh \"$MERGED\" \"$REMOTE\"
    path = c:/Program Files (x86)/winmerge/winmergeu.exe
[mergetool]
    keepBackup = false
    trustExitCode = false
[diff]
    guitool = winmerge
[difftool "winmerge"]
    path = c:/Program Files (x86)/winmerge/winmergeu.exe
    cmd = \"c:/Program Files (x86)/winmerge/winmergeu.exe\" \"$LOCAL\" \"$REMOTE\"

запустите "GitExtensions", goto"tools->Settings->Git Extensions->git Config". Если вы сделали вашу установку правильно и ссылка на инструменты в их каталоге, ваша страница глобальных настроек должна выглядеть следующим образом (Примечание: пожалуйста, заполните свое имя на имя и адрес электронной почты):

mergetool: winmerge
путь к mergetool: c:/Program Files (x86)/winmerge/winmergeu.exe
команда mergetool: wMerge.sh "$MERGED" "$REMOTE"
difftool в деталях: winmerge
путь к difftool в деталях: c:/Program Files (x86)/winmerge/winmergeu.exe
команда difftool в деталях: "c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"

окончание строки: checkout as-is, commit as-is

Перейдите на вкладку контрольный список, чтобы убедиться, что GIT-это все "зеленый" и доволен вашей установкой.


на расширениях Git v2.47.3, это действительно легко настроить это:

настройки -> глобальные настройки -> в выпадающем для Mergetool писать вручную: WinMerge и наблюдайте за чудом.

же для difftool в деталях выпадающем.

enter image description here

||   ||   ||
\/   \/   \/

enter image description here

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


в windows 7 это то, что наконец-то сработало для меня. Примечание "'c:/path/here'" кавычки вокруг моего пути к программным файлам.

[merge]
    tool = winmerge
[mergetool "winmerge"]
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$MERGED"
[diff]
    tool = winmerge
[difftool "winmerge"]
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$LOCAL" "$REMOTE" -dl "Local" -dr

ответ@sebastiaan не работал для меня (может быть, он устарел?)

это "глобальные настройки", которые работают для меня с помощью GitExtensions 2.28:

Mergetool: winmerge
Путь к mergetool: D:/path/to/WinMerge/WinMergeU.exe
Команда Mergetool: "D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
Это заставляет WinMerge использовать "файл конфликта", созданный git.
-e позволяет нажать ESC, чтобы закрыть winmerge.

difftool в деталях: winmerge
Путь к difftool в деталях: D:/path/to/WinMerge/WinMergeU.exe
Difftool в деталях команда:"D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
-dl и -dr установите описания для левой и правой панели.


добавьте или измените в конфигурационном файле следующее:

[merge]
    tool = winmerge
[mergetool "winmerge"]
    cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED"

это решение отличается двумя способами:

  1. просто называет WinMergeU.exe *conflictfile*, в то время как двухсторонние вызовы страдают от того, что левое окно представляет <<<<<<<, ======= и >>>>>>> маркеры, которые содержит $MERGED.
  2. применить mergetool на основе РЕПО - я редактирую файл $GIT_DIR / config . Тот же результат может быть достигнут путем вызова git config без --system или --global аргумент. Это отметить, что есть несколько областей конфигурации на выбор.

переменная $PROGRAMFILES поддерживается git bash и (в отличие от аналогичной переменной в собственном Windows cmd) переходит в "Program Files (x86)".