Как настроить плоскую версию Meld как git mergetool?

Установив Meld как обычный пакет Linux, довольно просто настроить Meld как инструмент слияния git, вот выдержка из моего .gitconfig.

[merge]
  tool = meld
[mergetool "meld"]
  trustExitCode = true
  cmd = meld --args --auto-merge \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" --output=\"$PWD/$MERGED\"

Но как насчет плоской версии Meld, которую нельзя запустить просто с помощью команды meld? Я думаю, что часть cmd должна быть чем-то вроде

cmd = flatpak run org.gnome.meld --args --auto-merge \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" --output=\"$PWD/$MERGED\"

но эта точная команда не работает. Как его следует модифицировать?


person oidualc    schedule 27.04.2019    source источник


Ответы (2)


Пройдя этот процесс сегодня, я решил поделиться своим окончательным рабочим решением для трехстороннего слияния. Он основан на возможном переводе из VonC выше.

[merge]
  tool = meld_flatpak

[mergetool "meld_flatpak"]
  cmd = flatpak run --file-forwarding org.gnome.meld \"@@\" $LOCAL \"@@\" \"@@\" $BASE \"@@\" \"@@\" $REMOTE \"@@\" --output \"@@\" $MERGED \"@@\"

[mergetool]
  prompt = false
  keepBackup = false
  writeToTemp = true
person Mike    schedule 16.03.2021
comment
Хороший отзыв. Проголосовал. - person VonC; 16.03.2021

Проверьте, похоже ли это на flatpak issue 1423:

Вам понадобится следующая команда:

My .gitconfig:

[diff]
    tool = meld_flatpak


[difftool "meld_flatpak"]
    cmd = flatpak run --file-forwarding org.gnome.meld \"@@\" $LOCAL \"@@\" \"@@\" $REMOTE \"@@\"


[difftool]
    prompt = false

Возможный перевод для mergetool (с учетом синтаксиса для объединения):

cmd = flatpak run --file-forwarding org.gnome.meld  meld $LOCAL \"@@\" $BASE \"@@\" $REMOTE \"@@\" --output=$MERGE\"@@\"
person VonC    schedule 27.04.2019
comment
Нашел это еще до публикации вопроса, но это для difftool. Синтаксис для меня довольно неясен и не очевидно, как его перевести для mergetool, например, что это за @@ ? - person oidualc; 27.04.2019
comment
@oidualc попробуйте аналогичный синтаксис для mergetool, чтобы увидеть, работает ли он. - person VonC; 27.04.2019
comment
@oidualc Как упоминалось в github.com/flatpak/flatpak/issues/543#issue -206280905, @@ действуют как маркеры (заполнители), поэтому flatpak может узнать, где имена экспортируемых файлов находятся в командной строке. - person VonC; 27.04.2019