これが勝利の答えになるとは思いませんが、かなり珍しい状況です。私以外の誰かがそれに出くわした場合に備えて言及します。
今日、hg push コマンドで「リポジトリのロックを待っています」というメッセージが表示されました。
ハングした hg コマンドを強制終了すると、.hg/store/lock が表示されませんでした
コマンドがハングしている間に .hg/store/lock を探したところ、存在していました。しかし、hg コマンドが強制終了されたときにロックファイルが削除されました。
プッシュのターゲットに行って、hg プルを実行したところ、問題ありませんでした。
最終的に、hg プッシュのプロセス ID がロック待機中のメッセージであることが毎回変化していることに気付きました。「hg push」は、それ自体が保持するロックを待ってハングしていたことが判明しました (またはサブプロセスである可能性があります。これ以上調査しませんでした)。
2 つのワークスペース (A と B と呼びましょう) には、symlink によって共有されている .hg ツリーがありました。
A/.hg --symlinked-to--> B/.hg
これは、Mercurial で行うのは良いことではありません。Mercurial は、同じリポジトリを共有する 2 つのワークスペースの概念を理解していません。しかし、別の VCS から Mercurial に来る人がこれをどのように望んでいるかは理解できます (Perforce は DVCS ではありませんが、Bazaar DVCS はそうできると伝えられています)。このプッシュを除いて、シンボリックリンクされた REP-ROOT/.hg がまったく機能することに驚いています。