Mercurial stuck “waiting for lock”

前端 未结 11 1637
天命终不由人
天命终不由人 2020-12-02 04:14

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
wai         


        
11条回答
  •  温柔的废话
    2020-12-02 04:41

    I do not expect this to be a winning answer, but it is a fairly unusual situation. Mentioning in case someone other than me runs into it.

    Today I got the "waiting for lock on repository" on an hg push command.

    When I killed the hung hg command I could see no .hg/store/lock

    When I looked for .hg/store/lock while the command was hung, it existed. But the lockfile was deleted when the hg command was killed.

    When I went to the target of the push, and executed hg pull, no problem.

    Eventually I realized that the process ID on the hg push was lock waiting message was changing each time. It turns out that the "hg push" was hanging waiting for a lock held by itself (or possibly a subprocess, I did not investigate further).

    It turns out that the two workspaces, let's call them A and B, had .hg trees shared by symlink:

    A/.hg --symlinked-to--> B/.hg
    

    This is NOT a good thing to do with Mercurial. Mercurial does not understand the concept of two workspaces sharing the same repository. I do understand, however, how somebody coming to Mercurial from another VCS might want this (Perforce does, although not a DVCS; the Bazaar DVCS reportedly can do so). I am surprised that a symlinked REP-ROOT/.hg works at all, although it seems to except for this push.

提交回复
热议问题