Система управления версиями (от англ. 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 коментарі:
Перед запуском в папке /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
Спасибо.
логично делать хук примерно такой конструкции
svn co 'svn://site.ru/PandoraEngine_v1.0' '/home/thepirat/soundsite/www' --username 'Логин' --password 'Пароль'
не удалось решить проблему лиш с игнором при заливке на СВН папки /forum/files которая весит 25 гб
Дописати коментар