App Store 应用的磁盘访问
ABDiff是一个App Store应用程序,因此它在苹果的沙盒中运行。 沙盒会阻止应用程序读取文件,除非您明确授予访问权限(例如,通过选择文件夹、拖动文件或在设置中添加访问根)。
这就是为什么你有时会看到这样的提示:
“ABDiff需要访问此文件夹才能打开Git传递的文件。”
为什么git difftool会触发磁盘访问提示
当您运行git difftool时,Git通常会创建它想要比较的文件的临时副本。
这些位于macOS临时文件夹中,例如:
/private/var/folders/.../T/...
这些路径在您的回购文件夹之外,因此像/Users/you/Developer/code这样的已保存访问根不适用。
因此,ABDiff要求您批准一个包含临时文件的文件夹,以便可以打开它们。
如果您拒绝提示,ABDiff将无法读取临时文件,您将看到“无权限读取…”等错误。
怎么办
使用以下选项之一:
您可以在设置→文件夹访问中查看或删除已保存的访问根。
提示时允许建议的文件夹。 ABDiff将所选文件夹添加到设置→文件夹访问,以便无需提示即可重复使用(除非您禁用“在此处保存Git访问提示”)。
如果您经常使用Git difftool,在设置中添加更广泛的访问根,例如:
/private/var/folders
通过比较repo中的真实文件而不是
git difftool来避免临时路径,例如将文件拖到ABDiff中。
为什么它看起来像“全磁盘访问”
如果Git从不同位置传递文件(例如,一个在你的repo中,一个在/private/var/…),唯一的公共父可能是/。
在这种情况下,系统选择器可以看起来像“整个磁盘”,但ABDiff仍然只读取您打开的文件。
ABDiff不自行请求全磁盘访问,也不扫描您的驱动器。 它只读取您明确选择打开或授予访问权限的文件和文件夹。