Unterscheidung zwischen Status und Update

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.

Status

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“.

Update

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“.