Ich erwarte nicht, dass dies eine gewinnbringende Antwort ist, aber es ist eine ziemlich ungewöhnliche Situation. Erwähnung für den Fall, dass jemand anders als ich darauf stößt.
Heute habe ich das "Warten auf Sperre im Repository" für einen hg-Push-Befehl erhalten.
Als ich den Befehl hung hg beendet habe, konnte ich keine .hg / store / lock sehen
Als ich nach .hg / store / lock suchte, während der Befehl aufgehängt war, existierte er. Die Sperrdatei wurde jedoch gelöscht, als der Befehl hg beendet wurde.
Als ich zum Ziel des Pushs ging und hg pull ausführte, war das kein Problem.
Schließlich stellte ich fest, dass sich die Prozess-ID auf dem hg-Push war, dass die Wartemeldung jedes Mal geändert wurde. Es stellte sich heraus, dass der "hg push" hing und auf ein Schloss wartete, das von selbst gehalten wurde (oder möglicherweise auf einen Teilprozess, den ich nicht weiter untersucht habe).
Es stellt sich heraus, dass die beiden Arbeitsbereiche, nennen wir sie A und B, .hg-Bäume hatten, die von symlink gemeinsam genutzt wurden:
A/.hg --symlinked-to--> B/.hg
Dies ist NICHT gut mit Mercurial zu tun. Mercurial versteht das Konzept von zwei Arbeitsbereichen, die dasselbe Repository gemeinsam nutzen, nicht. Ich verstehe jedoch, wie jemand, der von einem anderen VCS zu Mercurial kommt, dies möchte (Perforce tut dies, obwohl es kein DVCS ist; das Bazaar DVCS kann dies Berichten zufolge). Ich bin überrascht, dass ein symlinked REP-ROOT / .hg überhaupt funktioniert, obwohl es bis auf diesen Push zu scheinen scheint.