Содержание статьи:
Разберем как развернуть систему управления версиями Subversion (SVN) на Ubuntu 14.04 Trusty Tahr. Так же данная инструкция работает на Debian 8 Jessie. Рассмотрим базовые параметры управления SVN (Создание, удалении репозиториев), разграничение прав пользователей SVN.
Подготовка системы
Перед началом установки обновляем систему до актуального состояния:
1 |
sudo apt-get update && sudo apt-get upgrade -y |
Добавляем системного пользователя (subversion), который будет владельцем репозитория и от него будет запускаться демон (SVN):
1 |
sudo adduser subversion --system --shell /sbin/nologin --group --disabled-password --home /var/svn |
Назначаем права доступа к папке для размещения репозиториев (SVN):
1 2 |
sudo chown -R subversion:subversion /var/svn sudo chmod -R 775 /var/svn |
Установка Subversion
Устанавливаем Subversion из репозиториев:
1 |
sudo apt-get install subversion |
Создаем стартовый скрипт SVN сервера:
1 |
sudo nano /etc/init.d/svnserve |
Вписываем в него следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#!/bin/sh ### BEGIN INIT INFO # Provides: svnserve # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Should-Start: $all # Should-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop svnserve # Description: Start/stop svnserve ### END INIT INFO test -f /usr/bin/svnserve || exit 0 OPTIONS="-d -T -r /var/svn" case "$1" in start) echo -n "Starting subversion daemon:" echo -n " svnserve" start-stop-daemon --start --quiet --chuid subversion:subversion --exec /usr/bin/svnserve -- $OPTIONS echo "." ;; stop) echo -n "Stopping subversion daemon:" echo -n " svnserve" start-stop-daemon --stop --quiet --exec /usr/bin/svnserve echo "." ;; reload) ;; force-reload) $0 restart ;; restart) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/subversion (start|stop|reload|restart)" exit 1 ;; esac exit 0 |
Делаем скрипт исполняемым и добавляем в автозагрузку:
1 2 |
sudo chmod a+x /etc/init.d/svnserve sudo update-rc.d svnserve defaults |
Установка SVN завершена. Можно приступать к созданию репозиториев и настройке доступа к ним.
Управление репозиториями Subversion
Приведу пример основных команд для управления системой контроля версий SVN посредством командной строки.
Создание репозитория:
1 |
svnadmin create "/path/to/repository" |
Создание репозитория использующий Berkeley-DB базу данных:
1 |
svnadmin create --fs-type bdb /var/svn/jakonda.test |
Создание репозитория использующий FSFS базу данных:
1 |
svnadmin create --fs-type fsfs /var/svn/jakonda.test |
Удаление репозитория:
1 |
svn delete "/path" |
Копирование репозитория:
1 |
svn copy "/source" "/target" |
Перемещение репозитория:
1 |
svn move "/source" "/target" |
Импорт в репозиторий SVN локальный проект:
1 |
svn import --username=user /local/path /path/to/repository |
Получить из репозитория рабочую копию (checkout):
1 |
svn co --username=user svn://hostname/svn/repository /local/path |
Получить версию для публикации\компиляции (без базы SVN):
1 |
svn export --username=user svn://hostname/svn/repository /local/path |
Разграничение прав пользователей Subversion
Настройка доступа к репозиторию выполняется с помощью конфигурационных файлов. Конфигурационный файл и файлы с пользователями и настройками доступа хранятся в папке conf в корне репозитория (в нашем примере это /var/svn/jakonda.test/conf)
Основной конфигурационный файл svnserve.conf:
1 2 3 4 5 6 7 8 9 10 11 |
[general] # Доступ c анонимным доступом ("write", "read" или "none") anon-access = none # Доступ для авторизованых пользователей:("write", "read" или "none") auth-access = write # Имя файла с пользователями password-db = passwd # Имя файла с правами authz-db = authz # Названия репозитория realm = My First Repository |
Файл содержащий пользователей и пароли (пароли хранятся в открытом виде) passwd:
1 2 3 |
[users] user1 = password1 user2 = password2 |
Файл содержащий группы пользователей и права на репозиторий или на часть его athz:
1 2 3 4 5 6 7 8 9 10 11 12 |
# Группы [groups] group1 = user1,user2 # Права на корень # группе group1 только для чтения # пользователю user2 полный доступ # всем остальным запретить доступ [/] @group1 = r user2 = rw * = r |
Настройка WebDAV доступа к Subversion
Устанавливаем необходимые зависимости:
1 |
sudo apt-get install apache2 libapache2-svn libapache2-mod-svn -y |
Настраиваем политику доступа к репозиториям subversion через apache. Редактируем файл конфигурации apache:
1 |
sudo nano /etc/apache2/mods-available/dav_svn.conf |
Приводим файл к виду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<Location /svn> # Включение доступа к репозиторию subversion DAV svn # Путь к конкретному репозиторию #SVNPath /var/lib/svn # Альтернатива SVNPath. Если необходимо доступ к нескольких репозиториям, # располагающимся в одной директории. # Задается либо SVNPath, либо SVNParentPath. Оба параметра одновременно # задавать нельзя. SVNParentPath /var/svn-repos # Включение аутентификации AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Location> |
Далее, необходимо задать пользователей, которым разрешен доступ к subversion через apache:
1 2 3 4 5 |
# Создается файл пользователей и добавляется пользователь jakonda1 sudo htpasswd -c /etc/apache2/dav_svn.passwd jakonda1 # Добавляется пользователь jakonda2 sudo htpasswd /etc/apache2/dav_svn.passwd jakonda2 |
Для применения изменений, перезапускаем apache:
1 |
sudo service apache2 restart |
Разрешаем доступ к репозиториям для http-сервера (www-data) и пользователям из группы subversion:
1 |
sudo chown -R www-data:subversion /var/svn |
На этом установка и настройка Subversion закончена. SVN готов к работе.
Понравилась или оказалась полезной статья, поблагодари автора
Оставить ответ