Ich verschiebe einen Erstellungsprozess, um mercurial zu verwenden, und möchte das Arbeitsverzeichnis wieder in den Zustand der Spitzenrevision versetzen. Frühere Läufe des Erstellungsprozesses haben einige Dateien geändert und einige Dateien hinzugefügt, die ich nicht festschreiben möchte, sodass ich lokale Änderungen und Dateien habe, die nicht zum Repository hinzugefügt wurden.
Was ist der einfachste Weg, um all das zu verwerfen und ein sauberes Arbeitsverzeichnis mit der neuesten Version zu erhalten?
Derzeit mache ich das:
hg revert --all
<build command here to delete the contents of the working directory, except the .hg folder.>
hg pull
hg update -r MY_BRANCH
aber es scheint, dass es einen einfacheren Weg geben sollte.
Ich möchte das Äquivalent zum Löschen des Repos, zum Erstellen eines neuen Klons und zum Aktualisieren tun. Aber das Repo ist zu groß, um schnell genug zu sein.
hg update 00
) und dann auf den Tipp zurück aktualisieren . Warum reicht es nichthg revert --all
aus, vor dem Abrufen und Aktualisieren wieder in einen konsistenten Arbeitsordnerstatus zurückzukehren?archive
Befehl in Zukunft hilfreich. Zum Beispiel könnten Siehg archive ../newbuild
, und ein Schnappschuss Ihres Repositorys wird zuletzthg update
dort platziert. Normalerweise mache ich das für nächtliche Builds, nur damit ich nicht riskiere, mein Repo zu überladen. Löschen Sie einfach das Build-Verzeichnis, wenn Sie es nicht mehr benötigen.Antworten:
Diese Schritte sollten auf Folgendes verkürzt werden können:
Das
-C
Flag weist den Aktualisierungsbefehl an, alle lokalen Änderungen vor dem Aktualisieren zu verwerfen.Dies kann jedoch dazu führen, dass nicht verfolgte Dateien in Ihrem Repository verbleiben. Es hört sich so an, als ob Sie diese auch loswerden möchten, also würde ich die
purge
Erweiterung dafür verwenden:In jedem Fall gibt es keinen einzigen Befehl, den Sie Mercurial ausführen lassen können, der alles tut, was Sie hier wollen, außer wenn Sie den Prozess auf die Methode "Vollständiger Klon" ändern, von der Sie sagen, dass Sie dies nicht können.
quelle
hg --config "extensions.purge=" purge --all
hg purge --all
gab mir nur gute Kopfschmerzen, da es auch meine lokalen Konfigurationen löschte, dh: Datenbankbenutzer / Passwort usw. :)Dadurch werden alle Änderungen entfernt und auf den neuesten Kopf in der aktuellen Verzweigung aktualisiert.
Und Sie können drehen Säuberung Erweiterung der Lage sein , alle nicht versionierten Dateien zu entfernen.
quelle
hg purge
ist für nicht versionierte Dateien.Um nicht verfolgte auf * nix ohne die Bereinigungserweiterung zu löschen, können Sie verwenden
Welches verwendet
quelle
Wenn Sie nach einer einfachen Methode suchen , sollten Sie diese ausprobieren.
Ich selbst kann mich kaum an Befehlszeilen für alle meine Tools erinnern, daher neige ich dazu, dies über die Benutzeroberfläche zu tun:
1. Wählen Sie zuerst "Festschreiben".
2. Zeigen Sie dann ignorierte Dateien an. Wenn Sie nicht festgeschriebene Änderungen vorgenommen haben, verbergen Sie diese.
3. Wählen Sie nun alle aus und klicken Sie auf "Unversioned löschen".
Getan. Es ist eine Prozedur, die viel einfacher zu merken ist als Kommandozeilen.
quelle
Der hg-Status zeigt Ihnen alle neuen Dateien an, und dann können Sie sie einfach rm .
Normalerweise möchte ich ignorierte und nicht versionierte Dateien entfernen, also:
Und dann folgen Sie mit:
Dadurch werden alle versionierten Dateien für die Revision xxxx in den richtigen Status versetzt
Um der Tradition des Stapelüberlaufs zu folgen, Ihnen zu sagen, dass Sie dies nicht tun möchten, stelle ich häufig fest, dass diese "Nuclear Option" Dinge zerstört hat, die mir wichtig sind.
Der richtige Weg, dies zu tun, besteht darin, in Ihrem Erstellungsprozess die Option "sauber machen" und möglicherweise auch "wirklich sauber machen" und "distclean machen" zu verwenden.
quelle