Não espero que seja uma resposta vencedora, mas é uma situação bastante incomum. Mencionando no caso de alguém que não seja eu.
Hoje recebi o "aguardando bloqueio no repositório" em um comando hg push.
Quando eu matei o comando hg desligado, não pude ver .hg / store / lock
Quando procurei .hg / store / lock enquanto o comando estava travado, ele existia. Mas o arquivo de bloqueio foi excluído quando o comando hg foi morto.
Quando fui ao alvo do push e executei hg pull, não há problema.
Eventualmente, percebi que o ID do processo no hg push era bloqueado, a mensagem em espera estava mudando a cada vez. Acontece que o "hg push" estava pendurado, aguardando uma trava mantida sozinha (ou possivelmente um subprocesso, não investiguei mais).
Acontece que os dois espaços de trabalho, vamos chamá-los de A e B, tinham árvores .hg compartilhadas pelo link simbólico:
A/.hg --symlinked-to--> B/.hg
Isso não é uma coisa boa a fazer com o Mercurial. O Mercurial não entende o conceito de dois espaços de trabalho que compartilham o mesmo repositório. Eu entendo, no entanto, como alguém que vem para a Mercurial de outro VCS pode querer isso (a Perforce, embora não seja um DVCS; o Bazaar DVCS pode fazê-lo). Estou surpreso que um REP-ROOT / .hg com link simbólico funcione, embora pareça exceto esse impulso.