我不希望这是一个成功的答案,但这是一个非常不寻常的情况。提到万一我以外的人遇到了它。
今天,我在hg push命令上获得了“等待存储库锁定”。
当我杀死了hg hg命令时,看不到.hg / store / lock
当命令挂起时我寻找.hg / store / lock时,它存在。但是当hg命令被杀死时,锁定文件被删除。
当我去推的目标,并执行汞拉,没有问题。
最终,我意识到hg push上的进程ID是每次都在更改的锁等待消息。事实证明,“ hg push”正在挂起,等待它自己持有的锁(或者可能是子进程,我没有进一步调查)。
事实证明,两个工作区(分别称为A和B)具有由symlink共享的.hg树:
A/.hg --symlinked-to--> B/.hg
这与Mercurial无关。Mercurial无法理解共享相同存储库的两个工作区的概念。但是,我确实知道,有人从另一个VCS来到Mercurial可能会想要这样做(Perforce确实做到了,尽管不是DVCS;据报道,Bazaar DVCS可以这样做)。我感到惊讶的是,一个符号链接的REP-ROOT / .hg完全可以工作,尽管除了此推动之外似乎还行。