Git difftool问题:无法创建临时文件

6

我正在使用配置了Kaleidoscope的git作为差异工具。这个配置已经使用了几个月,一直很好用。前两天也是正常使用的。但今天,当我尝试执行"git difftool"时,突然间,git报告以下错误:

fatal: unable to create temp-file: No such file or directory

在谷歌上搜索发现这可能是本地git仓库的目录权限问题。但即使在git仓库上进行递归chown操作后情况也没有改善。

Git-difftool文档没有提到它试图在哪里创建这个临时文件。有人有任何想法如何找出吗?


你的 Git 服务器上 $TMPDIR 的值是多少? - VonC
好的发现!$TMPDIR被设置为一些疯狂的东西“/private/tmp/PKInstallSandbox.W1I4ev/tmp”。经过一番搜索,这显然是一个已知问题,与应用程序(TotalTerminal)的安装程序有关。它今天进行了自我更新,但我没有想到它会真正破坏什么。 - odie
非常好。我已经发布了一个带有这些元素的答案,以便更容易被看到。 - VonC
1个回答

6
正如我所评论的,这种类型的消息通常取决于环境变量$TMPDIR的值。
在OP的情况下:

$TMPDIR被设置为一些奇怪的值"/private/tmp/PKInstallSandbox.W1I4ev/tmp"。
经过一番搜索,这显然是一个已知问题,是某个应用程序(TotalTerminal)的安装程序引起的。
今天它进行了自我更新,但我没有想到它实际上会破坏什么。

恢复$TMPDIR到"合理"的值(比如/tmp或其他特定于MacOs位置)应该能够解决问题。

你该如何将$TMPDIR设置为 /tmp? - dmackerman
1
根据您的shell,例如在您的.cshrc中编写export TMPDIR=/tmp,以便您的会话自动继承正确的值。 - VonC
1
我认为将其设置为“/tmp”并不是一个好主意,因为这意味着它应该由所有用户共享。当两个用户尝试读取或写入同一文件时,您会遇到权限问题。此外,默认情况下,“/tmp”由root拥有。默认情况下,OS X似乎设置了一些特定于用户的文件夹,并具有随机值,例如“/var/folders/e4/xytn52r93F56k0b6646m3d480000gn/D/”。 - laurent
@Laurent 我同意,你可以将$TMPDIR设置为适合你的账户和操作系统的任何值。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接