Mercurial 推送到远程仓库被它自己的锁阻止了

问题描述 投票:0回答:1

我的问题与这里的其他问题类似,但不完全一样。 我无法从 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 似乎被“它自己的”锁绊倒了。 有什么想法吗?

locking mercurial push symlink cifs
1个回答
0
投票
mfsymlinks

添加到

/etc/fstab
中的安装选项似乎已经解决了该问题。 显然,Mercurial 在创建/操作锁的过程中执行了某种符号链接魔法,并且 cifs 被它阻塞了。 我不知道为什么这个功能在工作多年没有问题后突然失效了。
    

© www.soinside.com 2019 - 2024. All rights reserved.