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_WRONLYO_CREAT 在所有允许任何类型的 file-writing 的文件系统中得到 支持,问题必须在于文件系统对 O_APPEND 标志的实现。

如果有人遇到这个问题,我已经找到了解决方法。我已将该目录设为 VM 中的本地目录,并授予主机网络访问权限。所以主机可以反过来访问它,我可以备份目录而无需完全备份 VM。