4b42 Logo

Wissensdatenbank

Benutzerbild
28 April 2016
3.705

Subversion's svnserve unter Debian 8 Jessie einrichten

Installation


apt install subversion


Konfiguration


Erstellen Sie ein Verzeichnis und richten Sie diesen als SVN Repository per svnadmin ein:
mkdir -p /data/svn/solution1
svnadmin create --fs-type fsfs /data/svn/solution1


Nun können Sie die Konfigurationsdateien mit einem Editor anpassen:
nano /data/svn/solution1/conf/svnserve.conf
[general]
anon-access = read
### alternativ anon-access = none
auth-access = write
password-db = passwd
realm = My First Repository


Passen Sie nun die Benutzernamen und Kennwörter an:
nano /data/svn/solution1/conf/passwd
[users]
4b42 = 4842


Dienst starten


Erstellen Sie nun eine neue Datei für das Startskript:
nano /etc/init.d/subversion
#!/bin/sh
#-----------------------------------------------------------------------#
# Copyright 2006-2016 by Kevin Bühl <kevin@buehl.biz> #
#-----------------------------------------------------------------------#
# __ __ _____________ __ __ ______________ #
# | | 2006 | | | _______ \ | | | | |___________ | #
# | | 2016 | | | | \ | | | | | | | #
# | |___ ____| | | |_______/ / | |___ ____| | ___________| | #
# |______ ____ | | _______ | |______ ____ | | ___________| #
# by | | | | \ \ Content | | | | #
# Kevin | | | |_______/ | Management | | | |___________ #
# Bühl |__| |_____________/ System |__| |______________| #
# #
# No part of this website or any of its contents may be reproduced, #
# copied, modified or adapted, without the prior written consent of #
# the author, unless otherwise indicated for stand-alone materials. #
# For more Information visit www.4b42.com. #
# This notice must be untouched at all times. #
#-----------------------------------------------------------------------#

#-----------------------------------------------------------------------#
# 2015-08-03 Kevin Bühl created
#-----------------------------------------------------------------------#

### BEGIN INIT INFO
# Provides: svnserve
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop:
# Short-Description: svnserve
### END INIT INFO

test -f /usr/bin/svnserve || exit 0
. /lib/lsb/init-functions
OPTIONS="-d -T -r /data/svn"

case "$1" in
start)
log_daemon_msg "Starting subversion daemon" subversion
if start-stop-daemon --start --quiet --oknodo --chuid svn:src --exec /usr/bin/svnserve -- $OPTIONS; then
log_end_msg 0
else
log_end_msg 1
fi
;;
stop)
log_daemon_msg "Stopping subversion daemon" subversion
if start-stop-daemon --stop --quiet --oknodo --exec /usr/bin/svnserve; then
log_end_msg 0
else
log_end_msg 1
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/subversion (start|stop|restart)"
exit 1
;;
esac
exit 0

Passen Sie nun die Berechtigungen an:
chmod +x /etc/init.d/subversion


Erstellen Sie nun die Dienstdatei für systemd:
nano /etc/systemd/system/subversion.service
[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target

[Service]
Type=forking
EnvironmentFile=/usr/bin/svnserve
#User=svn
#Group=svn
PIDFile=/run/svnserve.pid
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve.pid $OPTIONS

[Install]
WantedBy=multi-user.target



Starten Sie nun den Dienst:
/etc/init.d/subversion start
[ ok ] Starting subversion (via systemctl): subversion.service.


Prüfen Sie ob der SVN-Dienst läuft und auf Port 3690 lauscht:
netstat -an|grep 3690
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN


Nun können Sie mit folgendem Befehl subversion automatisch mit dem Betriebssystem starten:
update-rc.d subversion defaults



Nützliches


Standardmässig muss man leider bei subversion den vollständigen Pfad der Repositorys angeben:
svn://svn.4b42.com/usr/svn/solution1

Ich finde dies etwas unschön und habe hier einen Workaround, damit man direkt auf die Ordner im Verzeichnis /usr/svn/ zugreifen kann:

Als erstes müssen Sie die Binary umbenennen:
mv /usr/bin/svnserve /usr/bin/svnserve.bin

Erstellen Sie darauf eine neue Datei und öffnen Sie diese mit einem Editor:
nano /usr/bin/svnserve
#!/bin/sh
exec /usr/bin/svnserve.bin -r /data/svn "$@"

Passen Sie zum Schluss die Berechtigungen an:
chmod 755 /usr/bin/svnserve


Nun können Sie über die folgende URL auf Ihre repository zugreifen:
svn://svn.4b42.com/usr/svn/solution1