2010-08-30 1 views
33

Wie erhalten Sie eine Kopie einer früheren Revision einer Datei in Mercurial, ohne dass die neue Standardarbeitskopie der Datei in Ihrem Arbeitsbereich?Abrufen der alten Version einer Datei ohne Ändern der Arbeitskopie Eltern

Ich habe die hg revert Befehl gefunden und ich denke, es tut was ich will, aber ich bin mir nicht sicher.

Ich brauche eine Kopie einer früheren Revision meines Codes für ein paar Minuten zu arbeiten. Aber ich möchte die aktuelle Version, die gut funktioniert, nicht stören.

So würde ich dies tun:

hg revert -r 10 myfile.pls 

Gibt es eine Möglichkeit, es in ein anderes Verzeichnis, so meine aktuelle Arbeitsversion der Datei gestört wird nicht ausgegeben? Etwas wie:

hg revert -r 10 myfile.pls > c:\temp\dump\myfile_revision10.pls 

Antwort

49

Die cat command kann jede Version einer Datei abgerufen werden:

$ hg cat -r 10 myfile.pls 

Sie die Ausgabe in einer anderen Datei mit

$ hg cat -r 10 myfile.pls > old.pls 

oder mit der --output Flagge umleiten. Wenn Sie dies für mehrere Dateien tun müssen, nehmen Sie dann einen Blick auf die archive command, was dies für ein ganzes Projekt tun, zB

$ hg archive -r 10 ../revision-10 

Diese den Ordner revision-10 erstellt, die als es einen Schnappschuss Ihres Repository enthält sah in Revision 10.

Allerdings sollten Sie die meiste Zeit nur die update command verwenden, um eine frühere Revision auszuchecken. Update ist der Befehl, den Sie verwenden, um die Arbeitskopie nach dem Einziehen neuer Änderungen auf den neuesten Stand zu bringen, aber der Befehl kann auch verwendet werden, um Ihre Arbeitskopie veraltet bei Bedarf zu machen. Also

$ hg update -r 10 # go back 
(look at your files, test, etc...) 
$ hg update   # go back to the tip 
+0

Danke für die nützliche und * prägnante * Beschreibung von 'update'! Ich war etwas nervös, bevor ich den update-Befehl benutzte (wie ich es bei coriolanus vermutete). –

9

Der Befehl, den Sie verwenden, ist dies:

hg cat -r 10 myfile.pls > C:\temp\dump\myfile_revision10.pls 

ein bisschen Unix hilft mit Mercurial Befehle zu kennen. Vielleicht sollte cat einen eingebauten Alias ​​print oder etwas ähnliches haben.

Verwandte Themen