10 трав. 2009 р.

Установка и настройка Subversion (SVN) сервера под управлением FreeBSD

Итак, что же такое SVN, Subversion, система управления версиями? Обратимся к Википедии.
Система управления версиями (от англ. Version Control System или Revision Control System) — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости, возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение и многое другое.
Есть несколько таких систем. Мы будем использовать Subversion.

1. Установка

freebsd# cd /usr/ports/devel/subversion
freebsd# make && make install && make clean


Конфигурационное меню оставляем по умолчанию.

freebsd# rehash

2. Настройка

Создадим каталог для хранения репозитория:

freebsd# mkdir -p /home/svn/repository

Добавим группу и пользователя svn для разграничения привилегий к файлам Subversion:

freebsd# pw group add svn
freebsd# pw user add svn -g svn -s /usr/sbin/nologin -d /home/svn/repositories/


Добавим в файл /etc/rc.conf добавляем следующие строки:

# Стартуем SVN при загрузке
svnserve_enable="YES"
# Указываем путь к каталогу, где будет хранится репозиторий
svnserve_data="/home/svn/repository"
# Указываем пользователя и группу для определения привелегий доступа к файлам SVN
svnserve_user="svn"
svnserve_group="svn"

Создадим репозиторий:

freebsd# svnadmin create /home/svn/repository/

Выставим права:

freebsd# chown -R svn:svn /home/svn/

Настроим авторизированный доступ к репозиторию:

freebsd# cd /home/svn/repository/conf/
freebsd# ee svnserve.conf

Раскомментируем, изменяем строки, как показано ниже, и сохраняем файл.

anon-access = none
auth-access = write
password-db = passwd


Создаем пользователей, для доступа к SVN:

freebsd# cd /home/svn/repository/conf
freebsd# ee passwd


Добавляем нужное количество пользователей в формате логин = пароль и сохраняем:

developer = Pa$$w0rd

Стартуем SVN сервер:

freebsd# /usr/local/etc/rc.d/svnserve start

Вот и все, в принципе. Ваш SVN сервер настроен, теперь можно взять SVN клиент и попробовать подключиться к серверу. Если настройки произведены правильно, то в клиенте выпадет окошко для ввода логина/пароля.

P.S. Для тех кто разрабатывает веб проекты и хранит репозиторий на том же сервере где находится веб сервер, для удобства, можно сделать автоматическую публикацию текущего состояния разрабатываемого проекта на веб сервере после утверждения изменений в SVN клиенте. Для этого необходимо сделать следущее:

freebsd# cp /home/svn/repository/hooks/post-commit.tmpl /home/svn/repository/hooks/post-commit
freebsd# chmod 755 /home/svn/repository/hooks/post-commit
freebsd# ee /home/svn/repository/hooks/post-commit

Привести содержимое файла к следующему виду.

#!/bin/sh
/usr/local/bin/svn up '/usr/local/www/nginx/vhosts/plastilin.org.ua/html' --username 'developer' --password 'Pa$$w0rd'


Находясь в корневой директории веб сервера (/usr/local/www/nginx/vhosts/plastilin.org.ua/html) создать рабочую копию проекта, выполнив команду:

freebsd# /usr/local/bin/svn co file:///home/svn/repository --username 'developer' --password 'Pa$$w0rd'

Перейти в корневую директорию веб сервера. Далее в каталог repository и все содержимое перенести на уровень выше, тоесть в папку /html. Удалить каталог /repository в корневой директории веб сервера.


Теперь после проведения коммита последняя версия проекта будет публиковаться на веб сервере.

4 коментарі:

MisterX сказав...

Перед запуском в папке /usr/local/www/nginx/vhosts/plastilin.org.ua/html
надо сделать
/usr/local/bin/svn co localhost/repo_dir --username 'developer' --password 'Pa$$w0rd'
и в основном вынесни содержимое на один уровень вверх, поскольку в вебруте будет структура каталогов
/usr/local/www/nginx/vhosts/plastilin.org.ua/html/localhost/repo_dir

plastilin сказав...

Спасибо.

Анонім сказав...

логично делать хук примерно такой конструкции

svn co 'svn://site.ru/PandoraEngine_v1.0' '/home/thepirat/soundsite/www' --username 'Логин' --password 'Пароль'

Анонім сказав...

не удалось решить проблему лиш с игнором при заливке на СВН папки /forum/files которая весит 25 гб