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.
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