Moin Moin,

mal wieder was zu svn. Es geht darum wie ich einen svn Server - ich nenn das mal so - mit Apache2 einrichte. Der Witz dabei ist, dass der Apache2 so konfiguriert wird, dass wir sehr einfach per http Schnittstelle auf das Repository zugreifen können. Also Abfahrt.

1. svn installieren

Wie immer betrachte ich die Installation unter einem Debian Linux als User root. Die Installation ist denkbar einfach, wobei wir zum einen svn und zum anderen die Erweiterung für den Apache2 installieren müssen:

root@server: aptitude install subversion libapache2-svn

2. Modul dav_svn aktivieren

Jetzt aktivieren wir das Apache2 Modul dav_svn. Dazu wechseln wir in das Modul Verzeichnis des Apache und aktivieren es mit dem Apache Programm a2enmod:

root@server: cd /etc/apache2/mods-available/
root@server:/etc/apache2/mods-available# a2enmod dav_svn

3. Das Modul dav_svn konfigurieren

Nachdem alles installiert und aktiviert ist, geht’s jetzt an die Konfiguration. Dazu bearbeiten wir die Datei dav_svn.conf.

root@server: cd /etc/apache2/mods-enabled/
root@server:/etc/apache2/mods-enabled# vi dav_svn.conf

Der Inhalt der Datei sieht prinzipiell so aus. Ich lasse alle Kommentar weg und schreibe eigen dazu:

<Location /svn>
# muss auskommentiert werden, damit das Repository aktiviert wird
DAV svn

# wir wollen mehrere Repositorys verwalten
SVNParentPath /var/lib/svn

# Die Authentifizierung erfolgt über die Datei dav_svn.passwd
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd

# Wir wollen über mod_authz_svn die Rechte für den Zugriff auf die Repositorys steuern
AuthzSVNAccessFile /etc/apache2/dav_svn.authz

# Um die Repositorys auschecken zu können, muss ein gültiger User existieren
Require valid-user
</Location>

Ich habe in einem früheren Post schon erklärt, wie man mod_authz_svn einrichtet. Den Post findest Du hier.

Wenn wir alles erledigt haben starten wir den Webserver neu.

4. Einen User anlegen

Einen user legen wir an, indem wir diesen mit dem Program htpasswd in die Datei dav_svn.passwd eintragen. Dazu wechseln wir zuerst ins entsprechende Verzeichnis:

root@server: cd /etc/apache2/
<em>wenn die Datei noch nicht existiert</em>
root@server:/etc/apache2/htpasswd -c dav_svn.passwd
root@server:/etc/apache2# htpasswd dav_svn.passwd [user]

-> Dann zweimal Passwort eingeben

5. Ein Repository erstellen

So, alles eingestellt. Jetzt erstellen wir ein Repository. Dazu wechseln wir in das Verzeichnis, in welchem die Repository’s liegen sollen und nutzen das Program svnadmin wiederum als User root:

root@server: cd /var/lib/svn
root@server:/var/lib/svn# svnadmin create repositroy_neu

Damit haben wir ein Repository namens repository_neu erstellt. Aber Achtung. Damit das Repository über das web betrachtet werden kann, müssen wir die Rechte ändern. Ich gehe davon aus, dass der Apache2 User und die Group www-data heisst:

root@server:/var/lib/svn# chown -R www-data repository_neu/

Testen wir das Ganze und geben wir die URL des Repository’s im Browser ein:

http://www.server.de/svn/repository_neu

Wir müssen eine http Authentifizerung machen. Und danach sehen wir so was wie das hier:

Damit haben wir’s auch schon geschafft.

6. Ein Projekt auschecken

Hier noch ganz kurz, wie man ein svn Repository auf der Shell auscheckt:

user@server: cd /tmp
user@server:/tmp/ svn co htp://www.server.de/svn/repository_neu -username [user]
Anmeldebereich: http://www.server.de:80 Subversion Repository
Passwort für »[user]«: *********

Ausgecheckt, Revision 0.
user@root:/tmp/

Für Hilfe zu svn einfach svn help oder svn help [Befehl] eingeben.

Dann viel Spass

Andreas