Subversion ist ein freies Open Source Versionskontrollsystem und wird häufig als Nachfolger von CVS gehandelt; somit treffen bereits vorgestellte Eigenschaften von CVS auch auf Subversion zum großen Teil zu. Es bietet sich vor allem an, wenn man die Vorteile von CVS genießen möchte, ohne dessen Nachteile in Kauf nehmen zu müssen. Viele dieser Eigenschaften wurden bereits ansatzweise in Abschnitt 47.1.3, „Subversion“ vorgestellt.
Das Einrichten eines Repository auf einem Server ist eine recht einfache Prozedur. Hierzu stellt Subversion ein eigenes Administrationstool, svnadmin, zur Verfügung. Um ein neues Repository zu erstellen, gibt man ein:
svnadmin create /pfad/zum/repository
Weitere Optionen erhalten Sie mit
svnadmin help. Im Gegensatz zu
CVS verwendet
Subversion nicht RCS als Basis, sondern die
Berkeley Datenbank. Achten Sie darauf, ein Repository
nicht auf entfernten Dateisystemen wie NFS, AFS oder
Windows SMB anzulegen. Die Datenbank benötigt POSIX Lockingmechanismen,
welche die genannten Dateisysteme nicht bieten.
Um den Inhalt eines existierenden Repositories einzusehen, gibt es den Befehl svnlook:
svnlook info /pfad/zum/repository
Damit andere Benutzer auf das Repository zugreifen können, muss ein Server
konfiguriert werden. Hierbei kann auf den Webserver Apache zurückgegriffen
werden oder man verwendet svnserve, den hauseigenen Server von
Subversion. Läuft
svnserve einmal, kann über die URL
svn:// oder svn+ssh:// in einer URL
auf das Repository zugegriffen werden. Über die Konfigurationsdatei
/etc/svnserve.conf können Sie Benutzer einstellen, die
sich dann beim Aufruf von svn authentifizieren müssen.
Die Entscheidung für Apache oder svnserve hängt von vielen Faktoren ab. Hier empfiehlt sich ein Blick in das Subversion-Buch (Informationen hierzu siehe Abschnitt 47.5.3, „Weiterführende Informationen“).
Um auf ein Subversion-Repository zuzugreifen, gibt es den Befehl svn (ähnlich cvs). Ist der Server korrekt eingerichtet (mit entsprechendem Repository), kann der Inhalt von jedem Client darauf wie folgt angezeigt werden:
svn list http://svn.beispiel.de/pfad/zum/projekt
oder
svn list svn://svn.beispiel.de/pfad/zum/projekt
Mit dem Befehl svn checkout
können Sie
ein existierendes Projekt in das aktuelle Verzeichnis abspeichern
(engl. check out):
svn checkout http://svn.beispiel.de/pfad/zum/projekt projektname
Mit dem Auschecken erhält man ein neues Unterverzeichnis projektname auf dem Client. In diesem kann man
beliebige Änderungen (hinzufügen, kopieren, umbenennen, löschen)
durchführen:
svn add file svn copy oldfile newfile svn move oldfile newfile svn delete file
Jede dieser Befehle ist nicht nur auf Dateien, sondern auch auf Verzeichnisse anwendbar. Des Weiteren kann Subversion auch sog. properties (Eigenschaften) zu einer Datei oder Verzeichnis festhalten:
svn propset license GPL foo.txt
Setzt im vorigem Beispiel für die Datei foo.txt die
Eigenschaft license auf den Wert
GPL. Durch
svn proplist können
Sie Eigenschaften anzeigen:
svn proplist --verbose foo.txt Properties on 'foo.txt': license : GPL
Um Ihre Änderungen zu veröffentlichen, das heißt, auf dem Server zurückzuspielen, gibt man ein:
svn commit
Damit ein anderer Benutzer Ihre Änderungen in seinem Arbeitsverzeichnis eingespielt bekommt, muss er einen Abgleich mit dem Server über den folgenden Befehl vornehmen:
svn update
Im Gegensatz zu CVS kann der Status eines Subversion-Arbeitsverzeichnisses ohne Zugriff auf das Repository angezeigt werden:
svn status
Hierbei werden lokale Veränderungen in fünf Spalten angezeigt, die wichtigste Spalte ist die erste:
Keine Änderungen
Objekt wird als Hinzufügung angesetzt
Objekt wird zur Löschung angesetzt
Objekt wurde geändert
Objekt befindet sich im Konflikt
Objekt wurde ignoriert
Objekt befindet sich nicht unter Versionskontrolle
Objekt wird vermisst. Diese Markierung erscheint, wenn es ohne den svn-Befehl gelöscht oder verschoben wurde.
Objekt wurde als Datei verwaltet wurde jedoch durch ein Verzeichnis ersetzt oder umgekehrt.
Die zweite Spalte zeigt den Status von Eigenschaften (sog. properties) an.
Alle weiteren Spalten können im Subversion-Buch nachgelesen werden. Sollten
Sie einmal die genauen Parameter eines Befehls nicht mehr wissen, hilft
svn help weiter:
svn help proplist
proplist (plist, pl): List all properties on files, dirs, or revisions.
usage: 1. proplist [PATH...]
2. proplist --revprop -r REV [URL]
1. Lists versioned props in working copy.
2. Lists unversioned remote props on repos revision.
...Erste Anlaufstelle ist die Homepage von Subversion unter http://subversion.tigris.org. Ein sehr empfehlenswertes,
komplettes englischsprachiges Buch finden Sie nach der Installation des
Pakets subversion-doc im
Verzeichnis file:///usr/share/doc/packages/subversion/html/book.html. Dies ist
auch online unter http://svnbook.red-bean.com/svnbook/index.html erhältlich.