Apache Subversion
Apache Subversion (SVN) ist ein Versionsverwaltungssystem für Dateien und Verzeichnisse. Grundlage des Systems ist ein zentrales Projektarchiv (Repository). In diesem Artikel soll neben der Installation von Subversion auf die Installation des einfachen SVN-Servers svnserve eingegangen werden.
Installation
Subversion befindet sich im Extra-Repository:
# pacman -S subversion
SVN-Server einrichten
Für die Einrichtung des SVN-Servers gibt es prinzipiell 2 Möglichkeiten:
- svnserve stellt einen einfachen Server-Daemon zur Verfügung. Dieser benutzt ein eigenes Protokoll, welches optional mittels SSH verschlüsselt werden kann. Vorteil ist die einfache Einrichtung. Nachteil ist die Speicherung von Passwörtern im Klartext im Dateisystem.
- Apache HTTP Server als SVN-Server. Diese Lösung bietet mehr Flexibilität, ist aber schwieriger einzurichten.
Svnserve
Vorbereitung
Für den Betrieb von svnserve ist es empfehlenswert, für Subversion einen gesonderten Nutzer samt Gruppe anzulegen:
# useradd -d /home/svn -m -U -s /bin/false -c "Subversion" svn
(Erläuterung: Legt einen neuen Nutzer svn an, und erzeugt automatisch dessen Home-Verzeichnis und eine gleichnamige Gruppe)
Anlegen der Repositories
Im Home-Verzeichnis des Nutzers svn wird nun ein Stammverzeichnis für alle Repositories angelegt:
# sudo -u svn mkdir /home/svn/repos
Dort können anschließend die Repositories angelegt werden:
# sudo -u svn svnadmin create --fs-type fsfs /home/svn/repos/REPO_NAME
Nutzerrechte festlegen
Die Nutzerrechte können für jede Repository einzeln in der Konfigurationsdatei /home/svn/repos/REPO_NAME/conf/svnserve.conf
festgelegt werden. Als Rechtestufen können read|write|none
verwendet werden. Dies geschieht durch das Auskommentieren der Zeile
[general] auth-access = write password-db = passwd
Dort kann auch allen anonymen Nutzern Schreib- oder Lesezugriff gewährt werden:
[general] anon-access = read
Die Nutzer und Passwörter werden in /home/svn/repos/REPO_NAME/conf/passwd
festgelegt:
[users] harry = foopassword sally = barpassword
Starten des Servers
Hierzu muss /etc/conf.d/svnserve
entsprechend dem oben festgelegten Stammverzeichnis angepasst werden:
# # Parameters to be passed to svnserve # SVNSERVE_ARGS="-r /home/svn/repos" SVNSERVE_USER="svn"
Anschließend den Server starten:
# /etc/rc.d/svnserve start
Der Server-Daemon kann auch der rc.conf hinzugefügt werden:
DAEMONS = (... @svnserve)
Test des Servers
Ist alles korrekt eingerichtet, sollte folgender Test-Import in das Repository eine Meldung "Revision x übertragen."
zurückgeben:
$ cd /path/to/files $ svn import svn://domain.net/REPO_NAME -m "Import Test"
Apache HTTP Server
Wartung
Sicherung und Wiederherstellung eines Repositorys
Es ist empfehlenswert, in regelmäßigen Abständen ein Backup der Repositories auf einem physikalisch getrennten Medium anzulegen. Mit der folgenden Methode wird jeweils ein Repository gesichert. Sie muss für mehrere Repositories entsprechend wiederholt werden.
Zuerst wird ein Dump angelegt. Dieser sollte sinnvoll benannt werden:
# sudo -u svn svnadmin dump /home/svn/repos/REPO_NAME > /path/to/dumps/REPO_NAME-20110101.dump
Diese Dumps können dann später in ein frisch angelegtes Repository eingespielt werden:
# sudo -u svn svnadmin create --fs-type fsfs /home/svn/repos/REPO_NAME # sudo -u svn svnadmin load /home/svn/repos/REPO_NAME < REPO_NAME-20110101.dump
Wichtig ist hierbei das anschließende Setzen der Benutzerrechte:
# chmod -R g+w /home/svn/repos/REPO_NAME/db