2

Has any one got a init script for the svn service lying around that works?

Thanks

Sparky
  • 242
  • 1
  • 5
  • 12

3 Answers3

1

now-a-days it should be so simple (if only svnserve came with it; I'm using v1.9.5 currently):

sudo systemctl enable svnserve
sudo systemctl daemon-reload

but /etc/init.d/svnserve still works for Stretch (Debian v9.2, what I use currently):

#!/bin/sh
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: svnserve init script
# Description:       bare minimum svn init script
### END INIT INFO
DESC="subversion server"
DAEMON=/usr/bin/svnserve
DAEMON_ARGS="-d -r /data/svn --log-file /var/log/svn.log"

NOTE: change the repo base path to suite your needs, i.e. I used "svnadmin create /data/svn/repo1" and this path in the daemon args so that I could simply svn://host/repo1

and then run:

sudo chmod 755 /etc/init.d/svnserve
sudo update-rc.d svnserve defaults

if you get an error about missing init-d-script, you're prob using an old Debian, like Wheezy, so "sudo rm /etc/init.d/svnserve" and then "sudo cp /etc/init.d/skeleton /etc/init.d/svnserve" (which existed back in Wheezy, but doesn't now), and change the three lines below (first block is the default, and second block is what it should be, noting sbin=>bin):

NAME=daemonexecutablename
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="--options args"

NAME=svnserve
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-d -r /data/svn --log-file /var/log/svn.log"*

[too much info better than too little info]

0

Here is what i cooked up. note my svn directory is on the root folder /svn

#!/bin/bash
#
#   /etc/rc.d/init.d/subversion
#
# Starts the Subversion Daemon
#
# chkconfig: 2345 90 10
# description: Subversion Daemon

# processname: svnserve

. /etc/rc.d/init.d/functions

[ -x /usr/bin/svnserve ] || exit 1

RETVAL=0
prog="svnserve"
desc="Subversion Daemon"

start() {
        echo -n $"Starting $desc ($prog): "
   daemon $prog -r /svn -d
   RETVAL=$?
   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
   echo
}

stop() {
   echo -n $"Shutting down $desc ($prog): "
   killproc $prog
   RETVAL=$?
   [ $RETVAL -eq 0 ] && success || failure
   echo
   [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
   return $RETVAL
}

case "$1" in
  start)
   start
   ;;
  stop)
   stop
   ;;
  restart)
   stop
   start
   RETVAL=$?
   ;;
  condrestart)
        [ -e /var/lock/subsys/$prog ] && restart
   RETVAL=$?
   ;;
  *)
   echo $"Usage: $0 {start|stop|restart|condrestart}"
   RETVAL=1
esac

exit $RETVAL

Change this line to reflect your directory

daemon $prog -r /svn -denter code here

Then run in shell

#chkconfig --add svnserve
#chkconfig svnserve on

Restart the service to see if it works

#service svnserve restart

and boom :D

Sparky
  • 242
  • 1
  • 5
  • 12
0

I've created a intelligent debian script based mainly on Tomcat package. You can change the main variable if needed, It can handle default mechanizm also. Enjoy.

#! /bin/sh
#
# /etc/init.d/subversion -- startup script for Subversion
#
# Author: Csaba Tenkes csaba.tenkes@brevissimus.eu
#
### BEGIN INIT INFO
# Provides:          subversion
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start subversion
# Description:       Start the Subversion server.
### END INIT INFO

set -e
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DESC="Subversion server"
NAME=svnserve
SCRIPTNAME=/etc/init.d/$NAME
PIDFILE=/var/run/$NAME.pid

SVN_USER=subversion
SVN_GROUP=subversion
SVN_REPO_PATH=/opt/svn-repos/

SVNSERVE=/usr/bin/$NAME
SVNSERVE_ARGS="-d -r $SVN_REPO_PATH"

[ -x "$SVNSERVE" ] || exit 0

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

. /lib/lsb/init-functions


case "$1" in
  start)
    set +e
    log_daemon_msg "Starting $DESC" "$NAME"
    if ! [ -f "$PIDFILE" ];  then # TODO: 'ps fax | grep svnserve| grep ?' or process is existing
        umask 002
        start-stop-daemon --start --chuid $SVN_USER:$SVN_GROUP --make-pidfile --pidfile $PIDFILE --exec $SVNSERVE -- \
            $SVNSERVE_ARGS >/dev/null; 
        chown $SVN_USER "$PIDFILE" 
        log_end_msg 0
    else    
        log_progress_msg "(already running)"
        log_end_msg  $?
    fi
    set -e
    ;;

  stop)
    set +e
    log_daemon_msg "Stopping $DESC" "$NAME"
    if [ -f "$PIDFILE" ]; then 

        if start-stop-daemon --stop --exec $SVNSERVE; then
            log_end_msg 0
        else
            log_end_msg $?
        fi  
        rm -f "$PIDFILE"
    else
        log_progress_msg "(not running)"
        log_end_msg 0
    fi  
    set -e
    ;;

  restart|force-reload)
    if [ -f "$PIDFILE" ]; then
        $0 stop
        sleep 1
    fi
    $0 start
    ;;

  status)
    set +e
    start-stop-daemon --test --start --pidfile "$PIDFILE" \
    --user $SVN_USER --exec $SVNSERVE \
    >/dev/null 2>&1

    if [ "$?" = "0" ]; then
        if [ -f "$PIDFILE" ]; then
            PID=`cat $PIDFILE`
            log_daemon_msg "$DESC" "$NAME (pid $PID) is running.."
            log_end_msg 0
            exit 0
        else
            log_daemon_msg "$DESC" "$NAME is not running"
            log_end_msg 0
            exit 3
        fi
    else
        log_daemon_msg "$DESC " "$NAME is running with pid `cat $PIDFILE`"
        log_end_msg 0
        exit 0
    fi
    set -e
    ;;


  *)
    log_success_msg "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}"
    exit 1
    ;;
esac

exit 0