meld
のローカルインストールがめちゃくちゃになっているため、cairo
を使用できません。私はすでに障害をバグとして報告することを含めて、ある程度の時間を費やしてきましたが、メンテナはそれは正しいと思われるバグではないと述べています。したがって、私は別のより有望なアプローチを試して、flatpak
インストールを使用したいと思います。 flatpak run org.gnome.meld
で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
は、デフォルトで使用されるdiffツールのnameのみを指定します。呼び出すコマンドはdifftool.<tool>.cmd
で指定します。 ( git-difftool(1) のマニュアルページを参照してください。)
議論したように、 ここ (構成例付き)、flatpak run org.gnome.meld
を呼び出すときに、/tmp
によって作成されたgit difftool
の下のパスへのアクセスをMeldに与える方法がいくつかあります。
--file-forwarding
オプションを使用して、ファイルをドキュメントストアにエクスポートします。 (注:これはディレクトリをエクスポートしないため、git tool --dir-diff
はこの方法では機能しません。)--filesystem=FS
オプションを使用します。