Dieser Text befindet sich gegenwärtig in Bearbeitung, unterliegt ständigen Änderungen und kann dadurch nicht stets akkurat irgendeine freigegebene Version der Software Apache™ Subversion® beschreiben. Das Speichern dieser Seite als Lesezeichen oder andere auf diese Seite zu verweisen, ist keine so gute Idee. Besuchen Sie http://www.svnbook.com/, um stabile Versionen dieses Buchs zu erhalten.
Wie bereits in „Revisionen“ beschrieben, sind Revisionsnummern in Subversion ziemlich unkompliziert – ganze Zahlen, die bei jeder Übertragung einer Änderung größer werden. Trotzdem wird es nicht lange dauern, bis Sie sich nicht mehr genau erinnern können, was in welcher Revision geschah. Glücklicherweise erfordert der typische Arbeitsablauf in Subversion selten die Angabe von beliebigen Revisionen für die von Ihnen ausgeführten Funktionen. Für Funktionen, die dennoch einen Revisionsbezeichner erfordern, geben Sie im Allgemeinen eine Revisionsnummer an, die Sie in einer Übertragungs-E-Mail, in der Ausgabe einer anderen Subversion-Funktion oder in einem anderen bedeutsamen Zusammenhang gesehen haben.
Anmerkung | |
---|---|
Es ist verbreitete Praxis in Subversion-Gemeinden,
Revisionsnummern mit dem Präfix
„ |
Gelegentlich müssen Sie jedoch einen Zeitpunkt genau festlegen, für den Sie sich an keine Revisionsnummer erinnern können oder für den Sie keine parat haben. Deshalb erlaubt Ihnen svn neben ganzzahligen Revisionsnummern weitere Formen von Revisionsbezeichnern: Revisions-Schlüsselworte und Revisionsdaten.
Anmerkung | |
---|---|
Die verschiedenen Formen von
Subversion-Revisionsbezeichnern können bei der Angabe von
Revisionsbereichen gemischt werden. Beispielsweise können Sie
|
Der Subversion-Client versteht eine Reihe von
Revisions-Schlüsselworten. Diese Schlüsselworte können der
Option --revision
(-r
)
anstatt ganzer Zahlen als Optionsargument übergeben werden;
sie werden von Subversion zu bestimmten Revisionsnummern
aufgelöst:
HEAD
Die letzte (oder „jüngste“) Revision im Projektarchiv.
BASE
Die Revisionsnummer eines Objektes in der Arbeitskopie. Falls das Objekt lokal bearbeitet wurde, bezieht sie sich auf das unmodifizierte Objekt.
COMMITTED
Die letzte Revision kleiner oder gleich
BASE
, in der ein Objekt verändert
wurde.
PREV
Die Revision unmittelbar vor
der letzten Revision, in der ein Objekt verändert wurde.
Technisch bedeutet das
COMMITTED
-1.
Wie aus den Beschreibungen abgeleitet werden kann, werden
die Revisions-Schlüsselworte PREV
,
BASE
und COMMITTED
nur
in Bezug auf einen Pfad der Arbeitskopie verwendet – sie
sind nicht auf URLs des Projektarchivs anwendbar.
HEAD
kann hingegen in Verbindung mit beiden
Pfadtypen verwendet werden.
Hier ein paar Beispiele zur Verwendung von Revisions-Schlüsselworten:
$ svn diff -r PREV:COMMITTED foo.c # zeigt die letzte übertragene Änderung von foo.c an $ svn log -r HEAD # gibt die Protokollnachricht der letzten Übertragung an das # Projektarchiv aus $ svn diff -r HEAD # vergleicht Ihre Arbeitskopie (mit allen lokalen Änderungen) mit der # letzten Version dieses Baums im Projektarchiv $ svn diff -r BASE:HEAD foo.c # vergleicht die unmodifizierte Version von foo.c mit der letzten # Version von foo.c im Projektarchiv $ svn log -r BASE:HEAD # gibt alle Übertragungs-Protokollnachrichten des aktuellen versionierten # Verzeichnisses seit der letzten Aktualisierung aus $ svn update -r PREV foo.c # macht die letzte Änderung an foo.c rückgängig, indem die # Arbeitsrevision von foo.c vermindert wird $ svn diff -r BASE:14 foo.c # vergleicht die unmodifizierte Version von foo.c mit foo.c in der # Revision 14
Revisionsnummern offenbaren nichts über die Welt außerhalb
des Versions-Kontroll-Systems, doch manchmal müssen Sie einen
Zeitpunkt mit einem Moment der Versionsgeschichte korrelieren.
Um das zu ermöglichen, erlaubt die Option
--revision
(-r
) auch
Datumsangaben in geschweiften Klammern ({
und }
). Subversion akzeptiert die
standardisierten ISO-8601 Datums- und Zeitformate und ein paar
weitere. Hier sind einige Beispiele.
$ svn update -r {2006-02-17} $ svn update -r {15:30} $ svn update -r {15:30:00.200000} $ svn update -r {"2006-02-17 15:30"} $ svn update -r {"2006-02-17 15:30 +0230"} $ svn update -r {2006-02-17T15:30} $ svn update -r {2006-02-17T15:30Z} $ svn update -r {2006-02-17T15:30-04:00} $ svn update -r {20060217T1530} $ svn update -r {20060217T1530Z} $ svn update -r {20060217T1530-0500} …
Anmerkung | |
---|---|
Beachten Sie, dass es die meisten Shells erforderlich machen, mindestens Leerzeichen in Anführungsstriche zu setzen oder anderweitig zu maskieren, wenn sie Teile von Revisionsdaten-Spezifizierungen sind. Bestimmte Shells könnten auch Probleme mit der unmaskierten Verwendung von geschweiften Klammern bekommen. Schlagen Sie in der Dokumentation Ihrer Shell nach, was in Ihrer Umgebung notwendig ist. |
Falls Sie ein Datum angeben, wandelt Subversion dieses Datum in die letzte Revision zum Zeitpunkt dieses Datums um und verwendet dann die entsprechende Revisionsnummer:
$ svn log -r {2006-11-28} ------------------------------------------------------------------------ r12 | ira | 2006-11-27 12:31:51 -0600 (Mo, 27. Nov 2006) | 6 Zeilen …
Sie können auch einen Zeitraum angeben. Subversion findet dann alle Revisionen zwischen den und einschließlich der Daten:
$ svn log -r {2006-11-20}:{2006-11-29} …
Warnung | |
---|---|
Die Fähigkeit von Subversion, Revisionsdaten in
Revisionsnummern überführen zu können, beruht auf einer
sequentiellen Ordnung der Revisions-Datumsstempel – je jünger
die Revision, desto jünger der Datumsstempel. Da Datumsstempel
jedoch in der unversionierten, änderbaren
|