Beim Klonen eines Quecksilber-Repositorys wurde in Windows ein Bluescreen angezeigt.
Nach dem Neustart erhalte ich jetzt diese Meldung für fast alle hg-Befehle:
c: \ src \> hg commit Warten auf Sperre für Repository c: \ src \ McVrsServer von '\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 ' unterbrochen!
Google ist keine Hilfe.
Irgendwelche Tipps?
Antworten:
Wenn Sie auf die Sperre des Repositorys warten, löschen Sie die Repository-Datei:
.hg/wlock
(oder sie befindet sich möglicherweise in
).hg/store/lock
Wenn Sie die Sperrdatei löschen, müssen Sie sicherstellen, dass nichts anderes auf das Repository zugreift. (Wenn die Sperre eine Zeichenfolge aus Nullen oder Leerzeichen ist, ist dies mit ziemlicher Sicherheit der Fall.)
quelle
hg recover
sollte nach einer defekten Verriegelungssituation ausgeführt werden.Wann
waiting for lock on working directory
löschen.hg/wlock
.quelle
server:pid
. Vielen Dank. Dann musste ich laufen$ hg recover
, um das vorhandene Journal (& Commit-Nachricht) zu löschen, das ichctrl+c
bearbeitet hatte. Ich$ hg recover
bin mir nicht sicher, aber Sie können möglicherweise ausgeführt werden, ohne die Sperrdatei zu löschen, und dies wird für Sie erledigt. Einen Versuch wert, nehme ich an.Ich hatte dieses Problem ohne erkennbare Sperrdateien. Ich habe hier die Lösung gefunden: http://schooner.uwaterloo.ca/twiki/bin/view/MAG/HgLockError
Hier ist eine Abschrift von der Tortoise Hg Workbench-Konsole
Danach lief der abgebrochene Zug erfolgreich.
Die Sperre wurde vor mehr als zwei Jahren durch einen Prozess auf einem Computer festgelegt, der sich nicht mehr im LAN befindet. Schade für die hg-Entwickler, dass a) Sperren nicht angemessen dokumentiert werden; b) keine Zeitstempel für die automatische Entfernung, wenn sie abgestanden sind.
quelle
wlock
derjenige eingesperrt ist, verwenden Siehg debuglocks --force-wlock
Mitarbeiter hatten heute genau dieses Problem, nach einem BSoD beim Versuch zu pushen. Er musste:
.hg/store/lock
(gemäß der akzeptierten Antwort )..hg/store/phaseroots
(gemäß diesem TortoiseHG-Fehlerbericht ).Dann funktionierte sein Repo wieder.
BEARBEITEN: Gemäß dem Kommentar von @ Marmoute ist die Verwendung bei Problemen mit Sperren
hg debuglock
eine sicherere Alternative zum blinden Löschen der.hg/store/lock
Datei.quelle
Ich bin mit dem Sperrcode von Mercurial (ab 1.9.1) sehr vertraut. Der obige Rat ist gut, aber ich würde das hinzufügen:
(Für Neugierige: Ich konnte die Ursache dieses Problems noch nicht ermitteln, vermute jedoch, dass es sich entweder um eine ältere Version von Mercurial handelt, die auf das Repository zugreift, oder um ein Problem in Pythons Aufruf socket.gethostname () unter bestimmten Windows-Versionen.)
quelle
Ich hatte das gleiche Problem unter Win 7. Die Lösung bestand darin, folgende Dateien zu entfernen:
Für .hg / store / lock gab es keine solche Datei.
quelle
hg debuglock
Sie diese Option, um herauszufinden, was passiert, und beenden Sie den Vorgang, bei dem das Schloss gehalten wird.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:
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.
quelle
.hg/
? Wenn Sie sagen, dass die Repositorys „funktionieren“, führt das Ausführenhg up
in einem nicht dazu, dass der Dirstate im anderen nicht mehr synchron ist - oder unternimmt mercurial etwas Besonderes, um dies zu unterstützen?Ich hatte das gleiche Problem. Beim Versuch, ein Commit durchzuführen, wurde folgende Meldung angezeigt:
hg debuglock
zeigte dies:Also habe ich den folgenden Befehl ausgeführt, und das hat das Problem für mich behoben:
Verwenden von Win7 und TortoiseHg 4.8.7.
quelle
Wenn das gesperrte Repo das Original war, kann ich mir das nicht vorstellen geändert um es zu klonen, sodass Sie nur daran gehindert wurden, es in der Mitte zu ändern und den Klon durcheinander zu bringen. Nach dem Entfernen des Schlosses sollte es in Ordnung sein.
Die neue geklonte Kopie (wenn es sich um einen lokalen Klon handelt) kann sich jedoch in einem fehlerhaften Zustand befinden. Sie sollten sie daher wegwerfen und neu starten. (Wenn es ein Remote-Klon wäre, würde ich hoffen, dass er fehlgeschlagen ist und die unvollständige Kopie bereits weggeworfen hat.)
quelle
Ich habe dieses Problem unter Mac OS X 10.7.5 und Mercurial 2.6.2 beim Push-Versuch festgestellt. Nach dem Upgrade auf Mercurial 3.2.1 wurde "Keine Änderungen gefunden" anstelle von "Warten auf Sperre des Repositorys" angezeigt. Ich fand heraus, dass der Standardpfad so eingestellt wurde, dass er auf dasselbe Repository verweist. Es ist also nicht verwunderlich, dass Mercurial verwirrt wird.
quelle
path
Einstellung war der Schuldige.Wenn dies nur auf zugeordneten Laufwerken geschieht, liegt möglicherweise ein Fehler vor: https://bitbucket.org/tortoisehg/thg/issue/889/cant-commit-file-over-network-share . Die Verwendung des UNC-Pfads anstelle des Laufwerksbuchstabens scheint das Problem zu umgehen.
quelle