Как использовать Meld в качестве инструмента слияния с Sourcetree в Windows?

В моем файле .gitconfig есть следующее:

[user]
    name = myname
    email = [email protected]
[core]
    autocrlf = true
    excludesfile = C:\\Users\\myname\\Documents\\gitignore_global.txt
[diff]
        tool = meld
[difftool "meld"]
        cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
        prompt = false
[merge]
        tool = meld

[mergetool "meld"]
        cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
[difftool "sourcetree"]
    cmd = "C:/Program Files (x86)/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE"
[mergetool "sourcetree"]
    cmd = 'C:/Program Files (x86)/Meld/meld/meld.exe' \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
    trustExitCode = true

И в Sourcetree у меня есть следующие настройки:

Введите здесь описание изображения

Однако, когда я щелкнул правой кнопкой мыши файл в Sourcetree, чтобы выполнить внешнее сравнение, я смог открыть Meld, но содержимое файла вообще не отображалось.

Введите здесь описание изображения

Что я сделал не так в настройках?


person mynameisJEFF    schedule 16.02.2015    source источник


Ответы (5)


Я чувствую, что существующие ответы немного упустили суть. Вот мой собственный корм для собак:

Введите здесь описание изображения

Подробности аргументов:

Diff:  $LOCAL $REMOTE
Merge: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

Для External Diff вам нужно удалить $BASE из списка аргументов.

Для трехстороннего слияния вам нужно вместо этого нажать на опцию External Merge Tool, которая будет доступна только при наличии неразрешенных конфликтов.

Контекстное меню инструмента внешнего слияния

Если вы не ограничены Sourcetree + Meld, я считаю, что Git Extensions + < пакет href="http://kdiff3.sourceforge.net/" rel="noreferrer">KDiff3 также может быть хорошей альтернативой с открытым исходным кодом.

person Paris Qian Sen    schedule 25.05.2016
comment
Кстати, по мнению других, трехстороннее сравнение Meld не является фактическим трехсторонним слиянием, потому что для трехстороннего слияния требуется 4 окна: базовое, локальное, удаленное, объединенное. - person Paris Qian Sen; 16.08.2016
comment
Вы должны вставить аргументы в свой ответ. Неясно, есть ли в последнем примере больше аргументов. Например: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED - person Jonathan; 29.09.2016
comment
Итак, аргументы должны быть такими, как на скриншоте или в тексте? - person Andrew; 26.01.2018
comment
@Andrew Тот, что в тексте, более подробный. - person Paris Qian Sen; 29.01.2018

Фактическая настройка, которую следует использовать здесь, чтобы иметь настоящее трехстороннее слияние с вкладками только для чтения THEIRS и MINE, такова:

$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

Обратите внимание на = после --output.

Я наконец получил эту команду правильно, копаясь в комментариях ко второму ответу на этот вопрос Git слияние с использованием Meld< /а>.

person Jozef Legény    schedule 10.03.2016

Для OS X это выглядит так:

  • Команда сравнения: /Applications/Meld.app/Contents/MacOS/meld.

    • Arguments: $LOCAL $REMOTE
  • Команда слияния: /Applications/Meld.app/Contents/MacOS/meld.

    • Arguments: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

P.S. вам, возможно, придется настроить порядок $local и $remote в настройках объединения.

Чтобы использовать его из командной строки, вы должны установить его через brew: brew install meld

Панель настроек исходного дерева

person skywinder    schedule 04.10.2016
comment
Использование готового приложения Meld.app с [github.com/yousseb/meld/releases/] Мне нужно было установить команду Diff на: /Applications/Meld.app/Contents/MacOS/meld - person SteveS; 18.05.2017
comment
У меня не работало из коробки. необходимо использовать: $LOCAL $REMOTE для аргументов diff. - person robertdavid; 07.06.2017
comment
Мне пришлось сделать brew tap homebrew/cask, а затем brew cask install meld, чтобы установить его на OSX. Сейчас тестирую, спасибо! - person facundofarias; 19.09.2018
comment
Почему вы используете @LOCAL и @REMOTE ?? Разве это не должно быть $LOCAL и $REMOTE ?? - person 7wp; 18.09.2019
comment
если установить через brew, я использовал команду сравнения и слияния: /usr/local/bin/meld на моем OSX, это может работать - person jack jin; 30.12.2020

Попробуйте добавить расположение файла meld.exe в PATH (например, C:\Program Files (x86)\Meld), а затем в команде Diff просто введите meld вместо полного пути. См. суть как использовать meld с Sourcetree в Windows.

person redlus    schedule 27.04.2015

Если вы не хотите изменять переменную среды PATH, вы можете использовать короткие имена, совместимые с DOS:

C:\Progra~1 = C:\Program Files
C:\Progra~2 = C:\Program Files (x86)

Это позволяет избежать вызывающих проблемы пробелов в пути и хорошо сочетается с Sourcetree. Это хакерски, но работает. Затем вы можете использовать что-то вроде этого в качестве пути к Meld:

C:\Progra~1\Meld\meld.exe

Не гарантируется, что Progra~1 сопоставляется с 64-битным каталогом, поэтому вам может потребоваться поэкспериментировать с тем, какой из них сопоставляется с каким.

person pmont    schedule 21.05.2015