我将我的 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 在这种情况下公开的功能,如果没有,那么您将不得不尝试不同的方法。