我的问题与这里的其他问题类似,但不完全一样。 我无法从 Linux 推送到使用 CIFS 挂载的 Windows 网络共享上的远程存储库。 我多年来一直没有问题,但最近坏了。 最近的 Ubuntu 更新似乎破坏了网络连接,但重新安装网络管理器修复了该问题。 不知道有没有关系。
在我推送之前,远程仓库中没有锁(.hg/lock 或 .hg/store/wlock)。 当我按下时我收到消息
等待锁定 ''
工作目录持有的
最后的引号实际上是空的。 现在,当我查看远程存储库时,我可以看到 .hg/wlock 锁。 如果我删除它,它会立即重新创建。 推送过程永远不会解锁,我所能做的就是 CTRL-C。
我读到了调试锁。 当我在远程仓库中发出命令
hg debuglocks
时,我得到了这个
锁定:(0秒)
时钟:(0s)
我可以看到 Mercurial 实际上在该命令期间创建了这些锁。 大约一分钟后
hg debuglocks
产量
锁定:(87秒)
时钟:(87s)
所以锁还在那里。 锁会一直留在那里,直到我删除它们或发出
hg debuglocks -L -W
。
仅供参考,在本地存储库(在本地磁盘上)中发出
hg debuglocks
给出
锁:免费
时钟:免费
理应如此。 这是我期望在远程仓库中得到的结果,但没有。
我怀疑 CIFS 中存在某种原子文件或锁创建支持突然停止工作,但我不具备调试这些的知识。 安装 CIFS 的驱动器的所有其他方面均表现完全正常。 我可以毫无问题地手动创建文件并删除它们。 只是 Mercurial 似乎被“它自己的”锁绊倒了。 有什么想法吗?
mfsymlinks
添加到
/etc/fstab
中的安装选项似乎已经解决了该问题。 显然,Mercurial 在创建/操作锁的过程中执行了某种符号链接魔法,并且 cifs 被它阻塞了。 我不知道为什么这个功能在工作多年没有问题后突然失效了。