Как использовать Winmerge с расширениями Git? - PullRequest
49 голосов
/ 18 марта 2010

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

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

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

Ответы [ 5 ]

47 голосов
/ 19 ноября 2011

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

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

Настройка Winmerge в GIT Version Control
Откройте новый документ в текстовом редакторе. Скопируйте / вставьте следующее и сохраните документ как «wMerge.sh» в папке «C: \ Program Files (x86) \ Git \ bin \».

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

Перейдите в каталог «Users-> username» и найдите файл .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», зайдите в «Инструменты-> Настройки-> 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"

окончания строк: оформить заказ как есть, зафиксировать как есть

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

22 голосов
/ 31 мая 2014

На Git Extensions v2.47.3 это очень легко настроить:

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

То же самое для раскрывающегося списка "Difftool".

enter image description here

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

enter image description here

Просто глупо, что опция «WinMerge» не указана в выпадающем списке. Ну хорошо.

10 голосов
/ 20 марта 2013

На 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
8 голосов
/ 03 января 2012

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

Это «Глобальные настройки», которые работают для меня с использованием 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 устанавливают описания для левой и правой панели.

3 голосов
/ 15 февраля 2013

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

[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)».

...