Я не могу использовать 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, поэтому я в основном заинтересован в понимании того, как этот подход может работать.
Конфигурационная переменная 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
, чтобы разрешить прямой доступ к этим файлам / каталогам.