Subversion unter Ubuntu

Subversion ist eine Open-Source-Software zur zentralen Versionsverwaltung von Dateien und Verzeichnissen. In der Regel kommt diese Technik in Programmierumgebungen zum Einsatz, bei denen mehrere Entwickler an einem oder mehreren Programmen arbeiten. Allerdings kann man Subversion z.B. auch für Backup-Zwecke benutzen. In dieser Anleitung wird erklärt, wie man einen Subversion-Server unter Ubuntu einrichtet (getestet an Ubuntu 9.04).

Subversion installieren

Die Installation ist schnell gemacht. Man muss lediglich den Befehl

sudo aptitude install subversion

ausführen und schon wird alles nötige für einen Subversion-Server installiert.

Subversion einrichten

Nun erstellst den Ordner /var/svn, in dem später die Subversion-Repositories angelegt werden

sudo mkdir /var/svn

Danach wechselst du mit dem Befehl

cd /var/svn

in das soeben angelegte Verzeichnis.

Repositories einrichten

Kommen wir zum Einrichten von Repositories. In diesem Beispiel lege ich das Repository test an. Sinnvollerweise sollte ein produktives Repositorie aber einen aussagekräftigen Namen haben. Zunächst legst du das Repository mit dem Befehl

sudo svnadmin create test

an. Nun muss geregelt werden, wer auf das Repository Zugriff haben soll. Dazu editierst du nun die Datei /var/svn/test/conf/svnserve.conf:

sudo nano /var/svn/test/conf/svnserve.conf

Im oberen Teil der Konfiguration findest du die Zeilen

# anon-access = read
# auth-access = write

Zunächst entfernen wir die Kommentierung, entfernen also die Raute-Zeichen (#). Der Eintrag anon-access regelt den Zugriff für Personen, die ohne Benutzername und Passwort auf das Repository zugreifen wollen. Der Eintrag auth-access hingegen regelt den Zugriff für authentifizierte Personen. Ich empfehle hier die folgende Kombination einzutragen:

anon-access = none
auth-access = write

Als Zugriffsrechte stehen die Schlüsselwörter none (kein Zugriff), read (lesender Zugriff) und write (lesender und schreibender Zugriff) zur Verfügung. Für den privaten bzw. nicht professionellen Einsatz benötigt man keine komplexen Authentifizierungs-Methoden, deshalb nutzen wir hier die Datei passwd für die Subversion-Authentifizierung. Dazu muss zunächst die Kommentierung der Zeile

# password-db = passwd

entfernt werden, indem man das Raute-Zeichen (#) am Anfang der Zeile entfernt. Speichere die Änderungen nun ab. Die berechtigten Benutzer kann man nun in der Datei /var/svn/test/conf/passwd einrichten. Öffne die Datei dazu wieder mit nano:

sudo nano /var/svn/test/conf

In der Datei steht schon beschrieben, wie man Benutzer anlegen muss. Zunächst lösche die beiden auskommentierten Benutzer aus der Konfiguration. Dann kannst du deine individuellen Benutzer anlegen. Dazu musst du pro Benutzer eine Zeile hinzufügen, die wie folgt aufgebaut ist

<Benutzername> = <Passwort>

Speichere die Änderungen nun ab.

Subversion-Server starten

Unter Ubuntu muss man noch ein bisschen nachhelfen, damit beim Systemstart auch der Subversion-Dienst mitgestartet wird. Dazu habe ich ein Script geschrieben, welches eine Methode zum Starten, eine Methode zum Stoppen und eine Methode zum Neustarten des Subversion-Servers bereitstellt. Öffne dazu nun die Datei /etc/init.d/subversion mit einem Editor:

sudo nano /etc/init.d/subversion

In diese Datei kopierst du nun folgenden Text:

#!/bin/bash

case "$1" in
        start)
                svnserve -d -r /var/svn
                ;;
        stop)
                killall svnserve
                ;;
        restart)
                $0 stop
                sleep 3
                $0 start
                ;;
esac

Speichere die Änderungen. Damit man das Script auch ausführen kann, muss folgender Befehl ausgeführt werden:

sudo chmod +x /etc/init.d/subversion

Nun muss nurnoch das Script in den Systemstart aufgenommen werden. Das erfolgt mit dem Befehl

sudo update-rc.d subversion defaults

Der Server wird nun automatisch beim Systemstart mitgestartet. Du hast ebenfalls die Möglichkeit, den Server manuell zu Steuern. Mit dem Befehl

/etc/init.d/subversion start

kannst du den Server nun starten. Mit dem Befehl

/etc/init.d/subversion stop

stopp man den Server. Einen Neustart des Servers erreicht man mit Hilfe des Befehls

/etc/init.d/subversion restart

Fertig

Der Server ist nun fertig installiert und eingerichtet. Du kannst so viele Repositories anlegen, wie du willst. Um die Repositories nutzen zu können, benötigst du ein entsprechendes Programm, wie z.B. TortoiseSVN unter Windows. Auch Programmierumgebungen wie z.B. Eclipse bieten Möglichkeiten, um die Quellcodes mit dem Repository abzugleichen. Um Zugriff auf das hier angelegte test-Repository zu bekommen gibt man beim Client die URL

svn://<Host>/test

an. <Host> muss hierbei durch die IP-Adresse oder den Hostname des Servers, auf dem Subversion läuft, ersetzt werden.