我们目前在本地磁盘上有我们的 Git 存储库。它们由组共享并通过 SSH(使用 git-shell)访问。
由于空间问题,我们现在希望将存储库移动到 NAS 上的 NFS 共享。我一直在尝试这个,并且遇到了一个奇怪的问题。可以很好地克隆具有完全相同权限的新(和裸)存储库,但是推送更改(touch foo && git add foo && git commit && git push origin master)失败并出现错误“无法设置参考/头/主”和“写失败”。
现在,如果我在本地磁盘上重复这个场景,那么 refs/heads/master 就会被任何用户推送。相反,在 NFS 共享上,如果我将其所有者更改为尝试推送的用户,则不会引发错误。但是,在这两种情况下,用户都是拥有整个存储库并具有组写入权限的组的成员。此外,如果我只是使用 SSH 作为该组成员的用户登录,我可以在 NFS 共享和本地磁盘上触摸 refs/heads/master(正如预期的那样)。
因此,我在这里不知所措。我不知道为什么不同的文件所有者会导致推送失败,看看组权限如何允许用户覆盖 refs/heads/master。此外,即使在该文件上使用 chmod 777,推送也会失败,除非我 chown 文件。
如果有人能对这种怪异现象有所了解,我将不胜感激。提前致谢!