我们的网络开发公司有一台 Linux 服务器,上面有一个 Samba 共享,员工用它来开发网站。Samba 共享上有许多目录,它们充当网络服务器的文档根目录(共享上的文件夹 client/website.domain 匹配http://some.website.local/)。每个项目都有 Git 或 Subversion 管理的存储库。Windows 和 Mac 客户端都连接到 Samba 共享。Windows 计算机使用共享时没有问题。但是 Mac 客户端有问题。
自从我们最近改用 Git 以来,我开始注意到错误中的一种模式。有时,在 Subversion 中进行提交或更新时,SVN 客户端会卡住并显示一个相当模糊的错误。工作副本将被锁定,再次使用该工作副本的唯一方法是卸载并重新安装它。只有这样,我们才能运行 svn cleanup 并让工作副本再次可操作。
Git 现在也发生了同样的事情。有时当有人执行拉取操作时,所有文件都会更新,但索引文件无法写入。因此,Git 客户端认为刚从远程存储库拉取的更改实际上是用户所做的未暂存更改,因为索引文件未更新,所以它认为它仍然反映了存储库的旧副本。
因此,SVN 和 Git 都使用元数据(存储在 .svn 和 .git 中的文件)。这些文件经常以某种方式被锁定。普通文件永远不会发生这种情况。我们在 Linux 机器上的 smb.conf 文件中尝试了有关 oplocks 和其他相关设置的多种设置,但仍然无济于事。这开始让我们有点抓狂了。
有人有过类似的经历吗?到目前为止,我疯狂地搜索,但没有找到任何东西。