Кратко о настройке Subversion

Встала задача поднять систему контроля версий во внутренней сети для двоих человек. Давайте посмотрим как это делается. Я покажу как это сделать, когда нет времени разбираться, а рабочая система нужна еще позавчера.

Первое что нужно сделать - это установить саму Subversion. В Дебиан это делается достаточно просто:

# aptitude install subversion subversion-tools 

На локальной системе понадобятся еще такие пакеты, как kdesvn и kdesvn-kio-plugins , в Windows понадобится установить программу TortoiseSvn (как-то так она называлась)

Если все нужное ПО установлено давайте продолжим…

Для начала создадим конфиг файл, для стартового скрипта:

/etc/subversion.conf

#projects directory 
root=/var/svn 

Здесь я просто указал директорию , в которой будут находится проекты.

Идем дальше. Пишем стартовый скрипт.

/etc/init.d/subversion

#! /bin/sh
#
#  Скрипт для запуска Subversion-сервера (svnserve)
#
#
 
NAME=svnserve
DAEMON=/usr/bin/svnserve
PIDFILE=/var/run/svnserve.pid
 
 
PATH=/bin:/usr/bin:/sbin:/usr/sbin
 
 
 
 
start () {
 
        projects=`sed '/^#/ d;' /etc/subversion.conf|awk -F '=' '{print $2}'`
 
        svnserve --daemon -r $projects --pid-file $PIDFILE
 
 
        return $?
}
 
stop () {
        PID=`cat $PIDFILE 2>/dev/null`
        start-stop-daemon --stop --quiet --pidfile $PIDFILE --name svnserve
        #
        #   Мы должны дождаться пока svnserve действительно завершит работу.
        #
        sleep 2
        if test -n "$PID" && kill -0 $PID 2>/dev/null
        then
                 echo " Waiting"
                cnt=0
                while kill -0 $PID 2>/dev/null
                do
                        cnt=`expr $cnt + 1`
                        if [ $cnt -gt 24 ]
                        then
                                echo "Error!"
                                return 1
                        fi
                        sleep 5
                        echo  "Ok!"
                done
                        echo  "Ok!"
                return 0
        else
                echo  "Ok!"
                return 0
        fi
}
 
case "$1" in
    start)
        echo "Стартует сервис Subversion " "svnserve"
                start
        ;;
    stop)
 
        echo "Останавливается сервис Subversion" "svnserve"
        stop
        ;;
    restart)
        echo "Перезапускается сервис Subversion" "svn serve"
        stop
         start
        ;;
    *)
        echo "Используйте : /etc/init.d/$NAME {start|stop|restart}"
        exit 3
        ;;
esac
 
exit 0

Поясню лишь одну строку: projects=`sed '/^#/ d;' /etc/subversion.conf|awk -F '=' '{print $2}'` - она присваивает переменной projects ту самую корневую директорию, которая прописана в /etc/subversion.conf. После чего запускается сервер с параметрами

svnserve --daemon -r $projects --pid-file $PIDFILE

- где опция -r запрещает серверу искать репозитории выше указанной директории

Осталось лишь одно - заставить запускаться Subversion при старте системы. Нет ничего проще! просто пропишем в файл /etc/rc.local следующую строку:

/etc/init.d/subversion

Вот и все готово. Можно перезагрузиться и проверить стартанул ли сервис. Ах да… не забываем о правах:

# chmod a+x /etc/init.d/subversion

Есть и другой способ заставить стартовать сервис автоматически:

#  update-rc.d -f subversion defaults  
Последние изменения: %2010/%03/%22 %01:%Mar