Skip to content

Subversion

andyceo edited this page Jan 5, 2014 · 1 revision

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

svnserve - brings up the svn server so anonymous users

can access svn

Get LSB functions

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

Check that the package is still installed

[ -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 $SVN_REPO_PATH; then log_end_msg 0 else log_end_msg $? fi ;;

    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

Sidebar is under construction

Clone this wiki locally