Nie oczekuję, że będzie to zwycięska odpowiedź, ale jest to dość niezwykła sytuacja. Wspominając, na wypadek, gdyby wpadł na to ktoś inny niż ja.
Dzisiaj dostałem „oczekiwanie na blokadę w repozytorium” za pomocą polecenia push hg.
Kiedy zabiłem zawieszone polecenie hg, nie widziałem .hg / store / lock
Kiedy szukałem .hg / store / lock, gdy polecenie było zawieszone, istniało. Ale plik blokujący został usunięty po zabiciu polecenia hg.
Kiedy podszedłem do celu push i wykonałem hg pull, nie ma problemu.
W końcu zdałem sobie sprawę, że identyfikator procesu na hg push to komunikat oczekiwania na blokadę zmieniał się za każdym razem. Okazuje się, że „hg push” wisiał w oczekiwaniu na blokadę utrzymywaną przez siebie (lub ewentualnie podproces, którego nie badałem dalej).
Okazuje się, że dwa obszary robocze, nazwijmy je A i B, miały drzewa .hg współdzielone przez dowiązanie symboliczne:
A/.hg --symlinked-to--> B/.hg
To NIE jest dobra rzecz związana z Mercurialem. Mercurial nie rozumie koncepcji dwóch obszarów roboczych współdzielących to samo repozytorium. Rozumiem jednak, jak ktoś przychodzący do Mercurial z innego VCS może tego chcieć (Perforce tak robi, chociaż nie DVCS; podobno bazar DVCS może to zrobić). Dziwię się, że w ogóle działa symbolicznie REP-ROOT / .hg, chociaż wydaje się, że wyklucza to push.