Subversion - andyceo/documentation GitHub Wiki
====== SVN (Subversion) ======
Тестировалось под Ubuntu 8.04 LTS, 10.04 LTS.
===== Установка SVN =====
sudo aptitude install subversion
Описания установки SVN: http://hobbinsblog.blogspot.com/2008/02/ubuntu-server-subversion.html ===== Создаем репозиторий =====
- Создаем папку для будущего репозитория:
sudo mkdir /var/svn
- Создаем репозиторий:
sudo svnadmin create /var/svn
===== Настройка пользователей в системе для работы с репозиторием =====
- Создаем группу ''svn'' для работы пользователей Ubuntu с SVN:
sudo groupadd svn
- Создаем пользователя ''svn'' и добавляем его в группу svn:
sudo useradd svn -g svn
- Меняем права к папке репозитория для доступа пользователям из группы ''svn'':
sudo chown -R root:svn /var/svn
- Разрешаем на запись группе и владельцу:
sudo chmod -R g+ws /var/svn
- Добавляем себя (ваше имя пользователя в Ubuntu) в группу ''svn'':
sudo usermod -a -G svn имя_пользователя
===== Настройка удаленного доступа к svn-репозиторию с помощью svnserve (предпочтительный метод) =====
Тестировалось в Ubuntu 10.04
- Создаем основной конфиг репозитория: ''/var/svn/conf/svnserve.conf'': [general] anon-access = none auth-access = write password-db = passwd authz-db = authz realm = RUWARE SVN
[sasl] use-sasl = true min-encryption = 128 max-encryption = 256
- Если будет использоваться аутентификация с помощью SASL, то нам, скорее всего, не понадобиться файл ''passwd'', указанный в вышеприведенной конфигурации, и эту строчку можно удалить/закомментировать: ''#password-db = passwd''.
- Настроим вход через шифрование SASL. Установим SASL:
sudo aptitude install sasl2-bin
- Добавим пользователей в БД SASL с помощью:
sudo saslpasswd2 -c -u 'RUWARE SVN' имя_пользователя
Пользователи добавляются в файл базы данных SASL, который в Ubuntu 10.04 расположен в ''/etc/sasl2db''. - Библиотеки SASL в Ubuntu 10.04 находятся в ''/usr/lib/sasl2''. Создадим файл конфигурации для SASL в этой папке, под названием subversion.conf:
cd /usr/lib/sasl2 sudo touch subversion.conf
Содержимое файла: pwcheck_method: auxprop auxprop_plugin: sasldb sasldb_path: /etc/sasldb2 mech_list: DIGEST-MD5 В этом примере, файл базы данных SASL может лежать где-нибудь в другом месте. Как уже говорилось ранее, в Ubuntu 10.04 он расположен тут: ''/etc/sasldb2''. - Запускаем svnserve:
sudo svnserve -d --listen-host svn.ruware.com -r /var/svn/
- Чтобы остановить ''svnserve'':
sudo killall svnserve
- Настроим службу svnserve. В Ubuntu, svnserve из пакета ставится без службы. Создаем файлик службы ''/etc/init.d/svnserve'': #!/bin/sh -e
. /lib/lsb/init-functions . /etc/default/rcS
SVNSERVE=/usr/bin/svnserve SVN_USER=svn SVN_GROUP=svn SVN_HOST=svn.example.com SVN_REPO_PATH=/var/$SVN_USER/
[ -x $SVNSERVE ] || exit 0;
case "$1" in
start)
log_begin_msg "Starting svnserve..."
umask 002
if start-stop-daemon --start
--chuid $SVN_USER:$SVN_GROUP
--exec $SVNSERVE
-- -d -listen-host=$SVN_HOST -r
stop)
log_begin_msg "Stopping svnserve..."
if start-stop-daemon --stop --exec $SVNSERVE; then
log_end_msg 0
else
log_end_msg $?
fi
;;
restart|force-reload)
"$0" stop && "$0" start
;;
*)
echo "Usage: /etc/init.d/svnserve {start|stop|restart|force-reload}"
exit 1
;;
esac
exit 0
- Добавляем в автозагрузку при старте:
sudo update-rc.d svnserve defaults
===== Настройка удаленного доступа к svn-репозиторию с помощью Apache =====
Тестировалось в Ubuntu 8.04
- Устанавливаем модуль svn для Apache:
sudo aptitude install libapache2-svn
- Добавляем apache в группу ''svn'':
sudo usermod -a -G svn www-data
- Создаем пароль для доступа к папке с репозиторием, который впоследствии будет использоваться apache'ем:
sudo htpasswd -c -m /etc/apache2/svn.htpasswd имя_пользователя
В этом файле, будут храниться имена пользователей вместе с паролями. Коммиты в репозиторий от соответствующих пользователей будут происходить от их имени. Разруливать доступом будет Apache. - Создаем файл ''/etc/apache2/svn.authz'', в котором будут храниться настройки доступа для пользователей из ''/etc/apache2/svn.htpasswd'':
sudo touch svn.authz sudo nano svn.authz
Содержание файла примерно следующее: [/] andyceo = rw
[/artandy] arthurion = rw
[/Drupal/drupal6/profiles/andyceo] intecco = r
[/drupal6/libraries] intecco = r
[/Projects/sxd.ruware.com] intecco = r
- Создаем файл настройки для виртуального домена Apache ''/etc/apache2/sites-available/svn.example.com'': #for svn server
<VirtualHost *:80> ServerName svn.example.com
RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
<VirtualHost *:443> ServerName svn.example.com #ServerAlias www.svn.example.com #DocumentRoot /home/user/hosts/svn.example.com
SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA;+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /etc/apache2/apache.pem
ErrorLog /home/user/logs/svn.example.com-error.log LogLevel warn CustomLog /home/user/logs/svn.example.com-access.log combined ServerSignature Off
<Location "/"> Order Allow,Deny Allow from all
DAV svn SVNPath /home/user/svn/
AuthType Basic AuthName "RUWARE SVN" AuthUserFile /etc/apache2/svn.htpasswd
SVNListParentPath on AuthzSVNAccessFile /etc/apache2/svn.authz
Require valid-user
Источники: http://habrahabr.ru/blogs/ubuntu/26117/===== Бекап репозитория =====
svnadmin dump repositorypath | gzip > backupname.svn.gz
Много других способов: http://stackoverflow.com/questions/33055/what-is-the-best-way-to-backup-subversion-repositories