克隆Mercurial存储库时,在Windows中出现了蓝屏。
重新启动后,我现在收到几乎所有hg命令的以下消息:
c:\src\>hg commit waiting for lock on repository c:\src\McVrsServer held by '\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' interrupted!
Google没有帮助。
有小费吗?
#1楼
如果仅在映射的驱动器上发生,则可能是错误https://bitbucket.org/tortoisehg/thg/issue/889/cant-commit-file-over-network-share 。 使用UNC路径而不是驱动器号似乎可以避免此问题。
#2楼
当“等待锁定存储库”时,删除存储库文件: .hg/wlock
(或者可以在
) .hg/store/lock
删除锁定文件时,必须确保没有其他东西正在访问存储库。 (如果锁是零或空白的字符串,则几乎可以肯定是这样)。
#3楼
如果锁定的存储库是原始存储库,那么我无法想象它会对其进行修改以克隆它,因此,这只是防止您在中间对其进行更改并弄乱了克隆库。 卸下锁后应该没问题。
但是,新克隆的副本(如果是本地克隆)可能处于任何形式的畸形状态,因此您应该将其丢弃并重新开始。 (如果它是一个远程克隆,我希望它会失败,并且已经丢弃了不完整的副本。)
#4楼
今天,在尝试推送的BSoD之后,同事遇到了这个确切的问题。 他不得不:
- 删除文件
.hg/store/lock
(根据接受的答案 ) - 删除文件
.hg/store/phaseroots
(根据此TortoiseHG错误报告 )
然后他的回购再次起作用。
编辑:根据@Marmoute的评论-处理与锁相关的问题时,使用hg debuglock
是一种安全的选择,而不是一味删除.hg/store/lock
文件。
#5楼
我不希望这是一个成功的答案,但这是一个非常不寻常的情况。 提到万一我以外的人遇到了它。
今天,我在hg push命令上获得了“等待存储库锁定”。
当我杀死了hg hg命令时,看不到.hg / store / lock
当命令挂起时我寻找.hg / store / lock时,它存在。 但是当hg命令被杀死时,锁定文件被删除。
当我去推的目标,并执行汞拉,没有问题。
最终,我意识到hg push上的进程ID是每次都在更改的锁等待消息。 事实证明,“ hg推送”正在挂起,等待自身持有的锁(或者可能是子进程,我没有做进一步调查)。
事实证明,两个工作区(分别称为A和B)具有由symlink共享的.hg树:
A/.hg --symlinked-to--> B/.hg
这与Mercurial无关。 Mercurial无法理解共享相同存储库的两个工作区的概念。 但是,我确实知道,有人从另一个VCS来到Mercurial可能会想要这样做(Perforce确实做到了,尽管不是DVCS;据报道,Bazaar DVCS可以这样做)。 我感到惊讶的是,一个符号链接的REP-ROOT / .hg完全可以工作,尽管除了此推动之外似乎还行。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3187910