Subversion versucht, einen großen Teil der Verwirrung zu beseitigen, die hinsichtlich der Befehle cvs status und cvs update besteht.
Der Befehl cvs status erfüllt zwei
Zwecke: dem Benutzer alle lokalen Änderungen in der Arbeitskopie
zu zeigen und welche Dateien nicht mehr aktuell sind. Bedingt
durch die schwer lesbare Ausgabe des CVS-Befehls status,
verzichten viele CVS-Benutzer ganz auf die Vorteile dieses
Befehls. Stattdessen haben sie sich angewöhnt, cvs
update
oder cvs -n update
aufzurufen, um schnell ihre Änderungen zu sehen. Falls Benutzer
die Option -n
vergessen, hat das den
Nebeneffekt, dass Projektarchiv-Änderungen hineingebracht werden
könnten, um die sie sich momentan noch nicht kümmern
können.
Subversion räumt mit diesem Durcheinander auf, indem es die Ausgabe von svn status leicht lesbar für Menschen und Parser macht. Außerdem gibt svn update nur Informationen über Dateien aus, die aktualisiert werden, jedoch nicht über lokale Änderungen.
svn status gibt alle Dateien aus, an denen lokale Änderungen vorgenommen wurden. Standardmäßig wird kein Kontakt zum Projektarchiv hergestellt. Obwohl dieser Unterbefehl eine stattliche Anzahl an Optionen versteht, sind die folgenden die meistbenutzten:
-u
Verbindung zum Projektarchiv aufnehmen, um Informationen über nicht mehr Aktuelles zu ermitteln und dann anzuzeigen.
-v
Alle versionskontrollierten Einträge anzeigen.
-N
Nicht rekursiv ausführen (nicht in Unterverzeichnisse gehen).
Der Befehl svn status besitzt zwei Ausgabeformate. Im standardmäßigen „Kurzformat“ sehen lokale Änderungen so aus:
$ svn status M foo.c M bar/baz.c
Falls Sie die Option --show-updates
(-u
) angeben, wird ein umfangreicheres
Ausgabeformat verwendet:
$ svn status -u M 1047 foo.c * 1045 faces.html * bloo.png M 1050 bar/baz.c Status bezogen auf Revision: 1066
In diesem Fall tauchen zwei neue Spalten auf. Die zweite
Spalte beinhaltet ein Sternchen, falls die Datei oder das
Verzeichnis nicht mehr aktuell ist. Die dritte Spalte zeigt
die Revisionsnummer des Objektes in der Arbeitskopie an. Im
vorangegangenen Beispiel zeigt das Sternchen an, dass das
Objekt faces.html
beim Aktualisieren
verändert würde, und dass bloo.png
eine
dem Projektarchiv hinzugefügte neue Datei ist. (Die Abwesenheit
einer Revisionsnummer neben bloo.png
bedeutet, dass die Datei noch nicht in der Arbeitskopie
vorhanden ist.)
An dieser Stelle sollten Sie einen kurzen Blick auf die Liste aller möglichen Zustandscodes in svn status werfen. Hier sind einige der häufiger vorkommenden:
A Ressource ist zum Hinzufügen vorgemerkt (Add) D Ressource ist zum Löschen vorgemerkt (Delete) M Ressource hat lokale Änderungen (Modified) C Ressource hat Konflikte (Änderungen sind nicht vollständig aus der Version im Repository und der Version der Arbeitskopie zusammengeführt worden) (Conflict) X Ressource ist eXtern in Bezug auf diese Arbeitskopie (könnte aus einem anderen Repository kommen). Siehe „Externals-Definitionen“ ? Ressource ist nicht versionskontrolliert ! Ressource fehlt oder ist unvollständig (durch ein anderes Werkzeug als Subversion entfernt)
Für eine tiefergehende Erörterung von svn status, siehe „Verschaffen Sie sich einen Überblick über Ihre Änderungen“.
svn update aktualisiert Ihre Arbeitskopie und gibt nur Informationen über Dateien aus, die aktualisiert werden.
Subversion hat den Code P
und
U
von CVS zu U
vereinfacht. Wenn eine Zusammenführung stattfindet oder ein
Konflikt auftritt, gibt Subversion einfach
G
oder C
aus, statt
einen ganzen Satz darüber zu verlieren.
Für eine detailliertere Erörteung von svn update, siehe „Aktualisieren Sie Ihre Arbeitskopie“.