Mercurial stuck "waiting for lock"
Solution 1
When "waiting for lock on repository", delete the repository file: .hg/wlock
(or it may be in
).hg/store/lock
When deleting the lock file, you must make sure nothing else is accessing the repository. (If the lock is a string of zeros or blank, this is almost certainly true).
Solution 2
When waiting for lock on working directory
, delete .hg/wlock
.
Solution 3
I had this problem with no detectable lock files. I found the solution here: http://schooner.uwaterloo.ca/twiki/bin/view/MAG/HgLockError
Here is a transcript from Tortoise Hg Workbench console
% 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]
After this the aborted pull ran sucessfully.
The lock had been set more than 2 years ago, by a process on a machine that is no longer on the LAN. Shame on the hg developers for a) not documenting locks adequately; b) not timestamping them for automatic removal when they get stale.
Solution 4
Coworker had this exact problem today, after a BSoD while trying to push. He had to:
- delete the file
.hg/store/lock
(as per the accepted answer) - delete the file
.hg/store/phaseroots
(as per this TortoiseHG bug report)
Then his repo worked again.
EDIT: As per @Marmoute's comment - when dealing with lock-related issues, using hg debuglock
is a safer alternative to blindly deleting the .hg/store/lock
file.
Solution 5
I am very familiar with Mercurial's locking code (as of 1.9.1). The above advice is good, but I'd add that:
- I've seen this in the wild, but rarely, and only on Windows machines.
- Deleting lock files is the easiest fix, BUT you have to make sure nothing else is accessing the repository. (If the lock is a string of zeros, this is almost certainly true).
(For the curious: I haven't yet been able to catch the cause of this problem, but suspect it's either an older version of Mercurial accessing the repository or a problem in Python's socket.gethostname() call on certain versions of Windows.)
Comments
-
jm. almost 2 years
Got a bluescreen in windows while cloning a mercurial repository.
After reboot, I now get this message for almost all hg commands:
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 is no help.
Any tips?