Как настроить & ldquo; flatpak запустить org.gnome.meld & rdquo; как git diff.tool и merge.tool

Я не могу использовать meld из-за испорченной локальной установки cairo или еще. Я уже потратил некоторое время на это, включая сообщение об ошибке как об ошибке, но сопровождающий заявляет, что это не ошибка, которая кажется правильной. Поэтому я хотел бы попробовать другой, более перспективный подход и использовать установку flatpak. Я могу использовать meld как обычно с flatpak run org.gnome.meld, проблема заключается в передаче аргументов.

Простое git config --global diff.tool "flatpak run org.gnome.meld" приводит к сбою git difftool с незафиксированными изменениями из-за

git config option diff.tool set to unknown tool: flatpak run org.gnome.meld
Resetting to default...

This message is displayed because 'diff.tool' is not configured.
See 'git difftool --tool-help' or 'git help config' for more details.
'git difftool' will now attempt to use one of the following tools:
meld opendiff kdiff3 tkdiff xxdiff kompare gvimdiff diffuse diffmerge ecmerge p4merge araxis bc codecompare emerge vimdiff

Viewing (1/1): 'a'
Launch 'meld' [Y/n]?

Во избежание проблем я создал скрипт

#!/bin/sh
flatpak run org.gnome.meld "$@"

в ~/bin/ и сделал его исполняемым с помощью chmod +x ~/bin/meld. ~/bin/ является первым в моем PATH и подобран согласно which meld.

После следующего сценария

> cd $(mktemp -d)
> git init .
Leeres Git-Repository in /tmp/tmp.2RFxjgBbQ5/.git/ initialisiert
> echo 1 > a
> git add a
> git commit -m "Initial commit"
[master (Basis-Commit) 997fe0d] Initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 a
> echo 2 > a
> git difftool

Viewing (1/1): 'a'
Launch 'meld' [Y/n]? 

meld запускается для просмотра /tmp/cKSwbn_a и /home/[user]/a (обфусцированный пользователем), которые оба не существуют.

У меня есть другие менее удобные обходные пути, связанные с Docker, поэтому я в основном заинтересован в понимании того, как этот подход может работать.

1
задан 4 May 2019 в 12:11

1 ответ

Конфигурационная переменная Git diff.tool задает только имя инструмента сравнения, используемого по умолчанию. Команда для вызова указана в difftool.<tool>.cmd. (См. Справочную страницу git-difftool (1) .)

Как обсуждалось здесь (с примерами конфигурации), при вызове flatpak run org.gnome.meld существует пара способов предоставить Meld доступ к путям в /tmp, созданным git difftool:

  • Используйте опцию --file-forwarding, чтобы экспортировать файлы в хранилище документов. (Примечание: это не будет экспортировать каталоги, поэтому git tool --dir-diff не будет работать с использованием этого подхода.)
  • Используйте опцию --filesystem=FS, чтобы разрешить прямой доступ к этим файлам / каталогам.
0
ответ дан 4 May 2019 в 12:11

Другие вопросы по тегам:

Похожие вопросы: