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.
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“.
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.
Objekt ist zum Hinzufügen markiert.
Objekt ist zum Löschen markiert.
Objekt wurde geändert.
Objekt ist in einem Konflikt.
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.
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.