git 提交 Windows 共享网络文件夹
git commit on Windows shared network folder
我想使用 Hyper-V Windows 虚拟机进行开发。为了备份我的所有数据,我将主机 OS 的共享目录“挂载”(映射)到虚拟机中。我可以在这个共享目录中编辑文件。
但是,git 无法正常工作。每当我尝试提交某些内容时,它都会告诉我:
fatal: cannot update the ref 'HEAD': unable to append to '.git/logs/HEAD': Invalid argument
问题是什么?这是已知的不兼容性吗?
git status
似乎工作正常。
我不能说它是否是 已知的 不兼容,但是这个:
fatal: cannot update the ref 'HEAD':
unable to append to '.git/logs/HEAD': Invalid argument
强烈建议您使用的特定文件系统设置根本不支持 open-for-append:
*fd = open(path, O_APPEND | O_WRONLY | O_CREAT, 0666);
或:
*logfd = open(logfile, O_APPEND | O_WRONLY, 0666);
来自 C 代码。使用这两个中的任何一个——使用哪个取决于文件 .git/logs/HEAD
是否已经存在——open
系统调用返回 EINVAL
.
由于 O_WRONLY
和 O_CREAT
在所有允许任何类型的 file-writing 的文件系统中得到 支持,问题必须在于文件系统对 O_APPEND
标志的实现。
如果有人遇到这个问题,我已经找到了解决方法。我已将该目录设为 VM 中的本地目录,并授予主机网络访问权限。所以主机可以反过来访问它,我可以备份目录而无需完全备份 VM。
我想使用 Hyper-V Windows 虚拟机进行开发。为了备份我的所有数据,我将主机 OS 的共享目录“挂载”(映射)到虚拟机中。我可以在这个共享目录中编辑文件。
但是,git 无法正常工作。每当我尝试提交某些内容时,它都会告诉我:
fatal: cannot update the ref 'HEAD': unable to append to '.git/logs/HEAD': Invalid argument
问题是什么?这是已知的不兼容性吗?
git status
似乎工作正常。
我不能说它是否是 已知的 不兼容,但是这个:
fatal: cannot update the ref 'HEAD': unable to append to '.git/logs/HEAD': Invalid argument
强烈建议您使用的特定文件系统设置根本不支持 open-for-append:
*fd = open(path, O_APPEND | O_WRONLY | O_CREAT, 0666);
或:
*logfd = open(logfile, O_APPEND | O_WRONLY, 0666);
来自 C 代码。使用这两个中的任何一个——使用哪个取决于文件 .git/logs/HEAD
是否已经存在——open
系统调用返回 EINVAL
.
由于 O_WRONLY
和 O_CREAT
在所有允许任何类型的 file-writing 的文件系统中得到 支持,问题必须在于文件系统对 O_APPEND
标志的实现。
如果有人遇到这个问题,我已经找到了解决方法。我已将该目录设为 VM 中的本地目录,并授予主机网络访问权限。所以主机可以反过来访问它,我可以备份目录而无需完全备份 VM。