27.5. Einführung in Subversion

Subversion ist ein freies Open Source-System zur Versionskontrolle und wird häufig als Nachfolger von CVS betrachtet, d. h. bereits vorgestellte Eigenschaften von CVS treffen auch zum großen Teil auf Subversion zu. Es bietet sich vor allem an, wenn Sie die Vorteile von CVS genießen möchten, ohne dessen Nachteile in Kauf nehmen zu müssen. Viele dieser Eigenschaften wurden bereits ansatzweise in Abschnitt 27.1.3, „Subversion“ erwähnt.

27.5.1. Installieren eines Subversion-Servers

Die Installation einer Repository-Datenbank auf einem Server ist eine relativ einfache Prozedur. Subversion bietet dafür ein einfaches Administrationswerkzeug. Geben Sie zum Anlegen eines neuen Repositorys den folgenden Befehl ein:

svnadmin create /path/to/repository

Weitere Optionen erhalten Sie mit svnadmin help. Im Unterschied zu CVS verwendet Subversion nicht RCS als Basis, sondern andere Arten von Repository. Für gewöhnlich wird die Berkeley-Datenbank oder FSFS (ein Repository, welches das Dateisystem direkt verwendet) verwendet. Legen Sie ein Repository nicht auf entfernten Dateisystemen, wie NFS, AFS oder Windows SMB, an. Die Datenbank benötigt POSIX-Sperrmechanismen, die diese Dateisysteme nicht unterstützen.

Der Befehl svnlook bietet Informationen über ein bestehendes Repository.

svnlook info /path/to/repository

Ein Server muss konfiguriert werden, um verschiedenen Benutzern den Zugriff auf das Repository zu erlauben. Verwenden Sie dafür entweder den Apache-Webserver mit WebDAV oder svnserve, der Server, der mit Subversion geliefert wird. Sobald svnserve eingerichtet ist und läuft, kann über eine URL mit svn:// oder svn+ssh:// auf das Repository zugegriffen werden. Benutzer, die sich beim Aufruf von svn authentifizieren sollten, können in /etc/svnserve.conf eingerichtet werden.

Die Entscheidung für Apache oder svnserve hängt von vielen Faktoren ab. Sie sollten das Subversion-Handbuch studieren. Weitere Informationen dazu finden Sie in Abschnitt 27.5.3, „Weitere Informationen“.

27.5.2. Benutzung und Betrieb

Verwenden Sie den Befehl svn (ähnlich wie cvs) für den Zugriff auf ein Subversion-Repository. Mit svn help erhalten Sie die Beschreibung von Befehlsparametern:



checkout (co): Speichern einer Arbeitskopie aus einem Repository auf dem Client. 
Syntax: checkout URL[@REV]... [PATH]

  Sofern angegeben, bestimmt REV, in welcher Revision die URL zuerst nachgeschlagen wird.

  Wenn PATH weggelassen wird, wird der URL-Basisname als 
  Ziel verwendet. Sind mehrere URLs angegeben, wird jede 
  in einem Unterverzeichnis von PATH gespeichert, wobei der Name des Unterverzeichnisses 
  dem Basisnamen der URL entspricht. 
...

Auf den Inhalt, den ein korrekt konfigurierter Server mit einem entsprechenden Repository liefert, kann jeder Client mit einem der folgenden Befehle zugreifen:

svn list http://svn.example.com/path/to/project

Oder:

svn list svn://svn.example.com/path/to/project

Speichern Sie ein bestehendes Projekt im aktuellen Verzeichnis mit dem Befehl svn checkout:

svn checkout http://svn.example.com/path/to/project nameofproject

Dadurch wird auf dem Client das neue Unterverzeichnis nameofproject angelegt. Anschließend können Operationen (Hinzufügen, Kopieren, Umbenennen, Löschen) daran ausgeführt werden:

svn add file
svn copy oldfile newfile
svn move oldfile newfile
svn delete file

Diese Befehle können auch auf Verzeichnisse angewendet werden. Subversion kann zusätzlich Eigenschaften einer Datei oder eines Verzeichnisses aufzeichnen:

svn propset license GPL foo.txt

Das vorangehende Beispiel setzt den Wert GPL für die Eigenschaft license. Zeigen Sie Eigenschaften an mit svn proplist:

svn proplist --verbose foo.txt
 Properties on 'foo.txt':
 license : GPL

Speichern Sie die Änderungen mit svn commit auf dem Server. Ein anderer Benutzer kann Ihre Änderungen in sein Arbeitsverzeichnis übernehmen, indem er mithilfe von svn update eine Synchronisierung mit dem Server ausführt.

Im Unterschied zu CVS kann der Status eines Arbeitsverzeichnisses in Subversion ohne Zugriff auf das Repository über den Befehl svn status angezeigt werden. Lokale Änderungen werden in fünf Spalten angezeigt. Die erste Spalte ist dabei die wichtigste:

' '

Keine Änderungen.

'A'

Objekt ist zum Hinzufügen markiert.

'D'

Objekt ist zum Löschen markiert.

'M'

Objekt wurde geändert.

'C'

Objekt ist in einem Konflikt.

'I'

Objekt wurde ignoriert.

'?'

Objekt unterliegt nicht der Versionskontrolle.

'!'

Objekt wird vermisst. Diese Markierung erscheint, wenn das Objekt ohne den Befehl svn gelöscht oder verschoben wurde.

'~'

Objekt wurde als Datei verwaltet, wurde jedoch mittlerweile durch ein Verzeichnis ersetzt, oder umgekehrt.

Die zweite Spalte zeigt den Status der Eigenschaften. Die Bedeutung aller übrigen Spalten kann im Subversion-Handbuch nachgeschlagen werden.

27.5.3. Weitere Informationen

Erste Quelle ist die Homepage von Subversion unter http://subversion.tigris.org/. Ein sehr empfehlenswertes, komplett englischsprachiges Buch finden Sie nach der Installation des Pakets subversion-doc im Verzeichnis file:///usr/share/doc/packages/subversion/html/book.html. Es ist auch unter http://svnbook.red-bean.com/svnbook/index.html verfügbar.