Wer daheim eine eigene Software Versionierung implementieren will, geht dies leicht unter Linux. Da ich gerne über eine Weboberfläche die Versionierungen administrieren will, habe ich meinen bestehenden Raspberry Pi Webserver mit WebSVN erweitert.

Screenshot von WebSVN

Screenshot von WebSVN

Installationspakete

Bei Debian kann man einfach über das bestehende Repository die fehlenden Pakete nachinstallieren:

sudo apt-get install apache2 php5 libapache2-mod-php5 subversion libapache2-svn enscript websvn

Grundkonfiguration des SVN

Nach der Installation der Pakete, muss das SVN Verzeichnis angelegt werden:

sudo mkdir /var/lib/svn

Jetzt kann das erste Repository angelegt werden:

svnadmin create --fs-type fsfs /var/lib/svn/programmieren

Damit die Zugriffsrechte passen, müssen diese wie folgt eigestellt werden:

groupadd subversion
chown -R www-data:subversion /var/lib/svn/
chmod -R 770 /var/lib/svn/

Jetzt noch eine Schönheitskorrektur…

Da das Standard Repository noch nicht auf das neue Programmieren Repository zeigt, muss die Konfigurationsdatei wie folgt editiert werden:

# $config->addRepository("repos 1", "file:///var/svn-repos");

Testen von SVN

Um ein Upload zum SVN Dienst zu testen, kann man folgenden Befehl absetzen:

svn import -m "importing test over ssh+svn" Testdatei.txt svn+ssh://192.168.111.100/var/svn/programmieren/trunk

Erweiterung von SVN mittels WebDAV

Nachdem die Grundfunktion vom SVN System funktioniert, kann diese für den Webzugriff erweitert werden. Dabei müssen zwei Apache Module nachgeladen werden:

sudo a2enmod dav
sudo a2enmod dav_svn

Dem Apache Webserver muss nur noch eine neue vHost Konfigurationsdatei angegeben werden:

<Location /programmieren>
 DAV svn
 SVNPath /var/svn/programmiern
 AuthType Basic
 AuthName "Subversion Repository"
 AuthUserFile /etc/apache2/dav_svn.passwd
 Require valid-user
 SSLRequireSSL
</Location>

Damit nicht jeder Zugriff auf den WebSVN bekommt, wird mit einer Basic Authentifizierung der Zugriff eingeschränkt:

htpasswd -c /etc/apache2/dav_svn.passwd carlos

Weiterhin kann die Zugriffsteuerung angepasst werden:

[groups]
Admins = carlos

[programmieren:/]
* = r
@Admins = rw