Я не очікую, що це буде виграшною відповіддю, але це досить незвична ситуація. Згадування у випадку, якщо хтось, крім мене, натрапив на нього.
Сьогодні я отримав команду "hg push" "очікування блокування в сховищі".
Коли я вбив команду висів hg, я не міг побачити .hg / store / lock
Коли я шукав .hg / store / lock, поки команда висіла, вона існувала. Але lockfile було видалено, коли команда hg була вбита.
Коли я пішов до цілі поштовху, і здійснив тяг hg, жодних проблем.
Врешті-решт я зрозумів, що ідентифікатор процесу на hg push був блокуванням очікування повідомлення, що змінюється щоразу. Виявляється, "hg push" висів у очікуванні замка, який тримав сам (або, можливо, підпроцес, я далі не досліджував).
Виявляється, у двох робочих просторах, назвемо їх А і В, дерева .hg були спільними по символьному посиланню:
A/.hg --symlinked-to--> B/.hg
З Меркуріалом це НЕ хороша справа. Mercurial не розуміє концепцію двох робочих просторів, що діляться одним сховищем. Я розумію, однак, як хтось, хто приходить до Меркуріалу з іншого VCS, може цього захотіти (Perforce робить, хоча це не DVCS; базарний DVCS може це зробити). Я здивований, що синхронізований REP-ROOT / .hg працює взагалі, хоча, здається, крім цього натиску.