在克隆一个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!
谷歌没有帮助.
有小费吗?
jm.*_*jm. 482
当"等待锁定存储库"时,删除存储库文件:.hg/wlock或者可能在.hg/store/lock
删除锁定文件时,必须确保没有其他内容正在访问存储库.(如果锁是一串零,这几乎肯定是正确的).
小智 344
When waiting for lock on working directory, delete .hg/wlock.
Tho*_*ess 46
没有可检测到的锁文件,我遇到了这个问题.我在这里找到了解决方案:http://schooner.uwaterloo.ca/twiki/bin/view/MAG/HgLockError
这是Tortoise Hg Workbench控制台的成绩单
% hg debuglocks
lock: user None, process 7168, host HPv32 (114213199s)
wlock: free
[command returned code 1 Sat Jan 07 18:00:18 2017]
% hg debuglocks --force-lock
[command completed successfully Sat Jan 07 18:03:15 2017]
cmdserver: Process crashed
PaniniDev% hg debuglocks
% hg debuglocks
lock: free
wlock: free
[command completed successfully Sat Jan 07 18:03:30 2017]
Run Code Online (Sandbox Code Playgroud)
在此之后,流产的拉动成功.
这个锁已经在2年多前通过一个不再在局域网上的机器上的进程设置了.对hg开发人员感到羞耻a)没有充分记录锁; b)当它们变得陈旧时,不要将它们加时间戳以便自动删除.
Ian*_*emp 20
在尝试推动BSoD之后,今天同事确实遇到了这个问题.他不得不:
.hg/store/lock(根据接受的答案).hg/store/phaseroots(根据TortoiseHG错误报告)然后他的回购再次奏效.
编辑:根据@ Marmoute的评论 - 在处理与锁相关的问题时,使用hg debuglock是盲目删除.hg/store/lock文件的更安全的替代方法.
小智 12
我对Mercurial的锁定代码非常熟悉(截至1.9.1).上述建议很好,但我补充一点:
(对于好奇:我还没有能够找到这个问题的原因,但怀疑它是访问存储库的旧版本Mercurial或某些版本的Windows上的Python的socket.gethostname()调用问题.)
小智 7
我在Win 7上遇到了同样的问题.解决方案是删除以下文件:
至于.hg/store/lock - 没有这样的文件.
小智 7
我有同样的问题。当我尝试提交时收到以下消息:
waiting for lock on working directory of <MyProject> held by '...'
Run Code Online (Sandbox Code Playgroud)
hg debuglock 显示了这一点:
lock: free
wlock: (66722s)
Run Code Online (Sandbox Code Playgroud)
所以我执行了以下命令,这为我解决了问题:
hg debuglocks -W
Run Code Online (Sandbox Code Playgroud)
使用 Win7 和 TortoiseHg 4.8.7。
我不认为这是一个成功的答案,但这是一个相当不寻常的情况.提及万一我以外的其他人遇到它.
今天我在hg push命令上得到了"等待锁定存储库".
当我杀死挂起的hg命令时,我看不到.hg/store/lock
当我在命令挂起时查找.hg/store/lock时,它就存在了.但是当hg命令被杀死时,锁定文件被删除了.
当我去推动目标,并执行hg拉,没问题.
最终我意识到hg push上的进程ID是锁定等待消息每次都在改变.事实证明,"hg push"正在等待自己持有的锁(或者可能是子进程,我没有进一步调查).
事实证明,两个工作区,我们称之为A和B,由符号链接共享.hg树:
A/.hg --symlinked-to--> B/.hg
Run Code Online (Sandbox Code Playgroud)
这对Mercurial来说不是一件好事.Mercurial不理解共享同一存储库的两个工作空间的概念.但是,我确实理解,有人从另一个VCS来到Mercurial可能会想要这个(Perforce确实如此,但不是DVCS;据报道Bazaar DVCS可以这样做).我很惊讶一个符号链接的REP-ROOT/.hg可以工作,虽然它似乎除了这个推动.