如何将“flatpak run org.gnome.meld”配置为 git diff.tool 和 merge.tool

如何将“flatpak run org.gnome.meld”配置为 git diff.tool 和 merge.tool

meld由于 或其他的本地安装混乱,我无法使用cairo。我已经投入了一些时间,包括将失败报告为错误,但维护者表示这不是一个错误,这似乎是正确的。因此,我想尝试一种不同的更有希望的方法并使用安装。我可以像往常一样flatpak使用,问题似乎是参数传递。meldflatpak 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

Git 配置变量diff.tool仅指定姓名默认使用的 diff 工具。命令调用的指定在 中difftool.<tool>.cmd。(请参阅git-difftool(1)手册页。

如上所述这里(包含配置示例),调用时flatpak run org.gnome.meld,有几种方法可以让 Meld 访问/tmp由 创建的路径git difftool

  • 使用该--file-forwarding选项将文件导出到文档存储中。(注意:这不会导出目录,因此git tool --dir-diff使用此方法不起作用。)
  • 使用该--filesystem=FS选项,允许直接访问这些文件/目录。

相关内容