usb-ios 上的 gvsf (GNOME 虚拟文件系统),当我 git clone 时,我得到: fatal: Could not set 'core.filemode' to 'false' , due to OS service to rename

usb-ios 上的 gvsf (GNOME 虚拟文件系统),当我 git clone 时,我得到: fatal: Could not set 'core.filemode' to 'false' , due to OS service to rename

我将我的 ios 设备通过 USB 连接到我的 Linux 笔记本电脑上。 Linux 系统安装了一个 gvfs 指向它(/run/user/1000/gvfs/afc:host=xxxxxxxxxx,port=3),我在那里更改目录,我可以rsync来回切换,但我希望克隆一个位于我的笔记本电脑中的 git 存储库(/home/user/repo.git)。

git clone /home/user/repo.git

它将表现出雾状:

Cloning into 'repo'...
error: chmod on /run/user/1000/gvfs/afc:host=xxxxxxxxx,port=3/com.lhy.iMarkdown/repo/.git/config.lock failed: Operation not supported
fatal: could not set 'core.filemode' to 'false'

并且,sudo git clone /home/user/repo.git将给予fatal: could not create work tree dir 'repo': Permission denied.


@torek 的解释(https://stackoverflow.com/users/1256452/torek)的 git clone 回答了相同的情况,但对于 samba 挂载点:https://stackoverflow.com/a/50242563

当 git clone 使用调用操作系统服务来重命名文件时,会说该过程在第三步也是最后一步失败。


在这种情况下,GVfs 安装一个可移动的外部操作系统,该操作系统具有存储(https://askubuntu.com/a/1035122)。这就是 sudoing 不起作用的原因,因为 GVfs 使挂载点只能由挂载它的用户使用。


将我的 ios 设备连接到我的 Linux 笔记本电脑并使用其中的 git 来连接我的本地设备/网络中的存储库会非常方便。请问有人知道如何使其顺利吗?最好保留配置,/etc/fstab以便整个交互像我插入和使用的任何其他存储点一样自然。请注意,来回 rsync git 存储库上的内容并重新创建 git 是没有意义的。人们可能已经在限制性环境/盒子/设备/存储上使用 git 解决了此类问题。

答案1

在 Unix 上,Git 希望在设置配置文件时能够chmod正确设置文件的权限,就像克隆或初始化存储库时一样。在这种情况下,您尝试使用的文件系统不支持这一点,这就是失败的原因。

坏消息是,Unix 上的任何版本的 Git 都无法成功初始化或克隆该文件系统上的存储库,因为 Git 不认为chmod是 Unix 上的可选系统调用。您可以尝试在常规 Unix 文件系统上克隆存储库,然后将其复制过来并查看其工作原理。它最终可能会正常工作,因为在使用 Windows 驱动器时,在 Linux 的 Windows 子系统上某些情况下会出现此问题。它也可能不会,具体取决于 iOS 和 GVFS 在这种情况下公开的功能,如果没有,那么您将不得不尝试不同的方法。

相关内容