HowTo: Subversion Server / svnserve unter debian

subversion_logo_hor-468x64

Es wird die Einrichtung eines Subversion Servers und eines Repositories unter Debian behandelt.

Dieses HowTo setzt voraus, dass man sich mit TortoiseSVN oder einem anderen SVN-Client bereits auskennt.

Konfiguration von svnserve

Im Folgenden wird die Verwendung von svnserve über inetd ohne ssh beschrieben, da dies die einfachste Lösung ist.

Installation von svnserve
Zunächst wird svnserve mit aptitude oder apt-get installiert:
Update: das benötigte Paket heißt nicht mehr svnserve sondern subversion

1
apt-get install subversion

Anlegen der Pfade, Benutzer und Gruppen
Um dem Serverprozess nicht unnötig viele Rechte zu geben, werden ein User und eine Gruppe ‘svn’ benötigt, unter denen der Server gestartet wird und dem die Repositories gehören.

1
2
useradd svn
mkdir /pfad/zu/den/Repositories

Konfiguration von inetd

1
2
3
4
5
# man muss nicht vim benutzen...
vim /etc/inetd.conf
 
# einfügen in /etc/inetd.conf
svn stream tcp nowait svn.svn /usr/bin/svnserve svnserve -i -r /pfad/zu/den/Repositories

Das erste ‘svn’ gibt den Service an und muss in /etc/services definiert sein. Der Port für Subversion ist 3690. In der fünften Spalte wird der Benutzer und die Gruppe angegeben mit der das Programm in aus der sechsten Spalte gestartet werden soll. Die Parameter von svnserve:

1
2
3
-i : startet svnserve im inetd Modus
-r : legt das Root Verzeichnis der Repositories fest. Ein Zugriff auf Dateien in höheren
     Verzeichnisebenen ist somit nicht mehr möglich.

Neustart von inetd
Damit inetd die Änderungen in /etc/inetd.conf übernimmt muss inetd neu gestartet werden

1
/etc/init.d/openbsd-inetd restart

Jetzt sollte svnserv laufen und Anfragen bearbeiten.
Falls man seine Firewall im paranoid-Modus “block all” muss man nun noch ein Ausnahme für svnserv eintragen. Sofern man an der Firewall nichts geändert hat muss man auch nichts zusätzlich für svnserv einstallen.

Repository anlegen

Anlegen der Repository-Datenbank
Zunächst wird für das Repository ein neuer Ordner angelegt.
Subversion speichert die Daten in einer speziellen Datenbank. Diese muss anschließend in diesem Ordner angelegt werden.

1
2
3
4
mkdir /pfad/zu/den/Repositories/TestRepos
svnadmin create /pfad/zu/den/Repositories/TestRepos
chown -R svn:svn /pfad/zu/den/Repositories
chmod -R 700 /pfad/zu/den/Repositories

Überprüfung, ob die Datenbank angelegt wurde und alle Rechte stimmen:

1
2
3
4
5
6
7
8
ls -al /pfad/zu/den/Repositories/TestRepos
drwx------ 2 svn svn 4096 2009-04-01 21:38 conf
drwx------ 2 svn svn 4096 2009-04-01 21:20 dav
drwx------ 5 svn svn 4096 2009-04-02 10:36 db
-rwx------ 1 svn svn    2 2009-04-01 21:20 format
drwx------ 2 svn svn 4096 2009-04-01 21:20 hooks
drwx------ 2 svn svn 4096 2009-04-01 21:20 locks
-rwx------ 1 svn svn  229 2009-04-01 21:20 README.txt

Konfiguration des Repositories
Nun müssen die Zugriffsrechte auf das Repository festgelegt werden

1
vim /pfad/zu/den/Repositories/TestRepos/conf/svnserve.conf

Die relevanten Einstellungen sind:

1
2
3
4
[general]
anon-access = [none, read, write]
auth-access = [none, read, write]
password-db = [Dateiname]

In OpenSource Projekten ist es üblich “anon-access = read” zu verwenden, ich verwende für meine eigenen Entwicklungen allerdings

1
2
3
4
[general]
anon-access = none
auth-access = write
password-db = passwd

Zuletzt müssen noch die berechtigen Benutzer eingestellt werden. Wie zu sehen ist das Format “Benutzername = PlainTextPasswort”
Bei der vorliegenden unverschlüsselten Variante empfiehlt es sich den Benutzern zufällig generierte Passwörter zuzuweisen. Die Benutzer können ihre Passwörter nicht selbst ändern.

1
2
3
4
vim /pfad/zu/den/Repositories/TestRepos/conf/passwd
 
[users]
test = testpasswd

Jetzt kann auf das Repository zugegriffen werden

Zugriff auf das Repository
tortoisesvn_logo_hor468x64
Hier ein Beispiel (Windows mit TortoiseSVN):

Rechtsklick in einem Explorer-Fenster
svn-repo-browser1

Die Url des Repositories ist: svn://server.tld/TestRepos
TestRepos ist der relative Teil von /pfad/zu/den/Repositories/TestRepos bezüglich /pfad/zu/den/Repositories/

Statt server.tld kann auch die IP-Adresse verwendet werden
svn-repo-browser2

Hier ein Screenshot von meinem Test-Repository: (Mein Server heißt famserv)
svn-repo-browser3

Wichtiger Hinweis
Bei mir kam die Benutzer/Passwort Abfrage n-mal. Erst als ich den Speichern-Haken verwendet habe konnte ich auf das Repository zugreifen!

Bei Fragen / Verbesserungsvorschlägen einfach einen Kommentar hinterlassen

Weitere Informationen auf tortoisesvn.net (TortoiseSVN) und subversion.apache.org (Subversion)

Repository Konfiguration
svnbook.red-bean.com/…/svn.serverconfig.svnserve.html
svnbook.red-bean.com/…/svn.serverconfig.pathbasedauthz.html

Andere Artikel zum Thema Subversion

Update 1
Paketname und Urls aktualisiert

4 Kommentare

  • Von Oani, 31. Juli 2009 @ 10:01

    Danke für die Anleitung, heute abend gleich mal ausprobieren :)

  • Von Skysurfer, 11. Januar 2010 @ 21:41

    Tolle Anleitung! Ich habe den SVN-Server auf meiner kleinen nslu2-Kiste installiert. Debian hatte ich schon vorher drauf und nutze den nslu2 als Fileserver. Ich musste den SVN-Server aber mit “apt-get install subversion” installieren.

  • Von Gabriel, 16. März 2010 @ 18:01

    Danke für das HowTo und danke an Skysurfer für den Hinweis mit dem Paketnamen.

Andere Links zu diesem Artikel

  1. Debian+ Subversion +svnserver | berge.zeitgeist.ws — 19. Juni 2010 @ 10:10

RSS Feed für Kommentare zu diesem Artikel. TrackBack URI

Hinterlasse einen Kommentar

WordPress Themes