Subversion – это система контроля версий и изменений в файлах. Она позволяет хранить всю историю изменений контролируемых объектов и восстанавливать данные с любой фиксированной точки. Subvesion активно используется при Web-разработке.

В статье используются CentOS 6.0 и SubVersion 1.6.11

1. Введение

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

В хранилище Subversion хранятся рабочие данные и все изменения производимые с ними. К этому хранилищу можно получить доступ через файловую систему, через svn+ssh соединение или по протоколу http, поэтому хранилище может располагаться в любом месте. Что бы начать работать с веб-сайтом нужно загрузить в хранилище данные при помощи svn import, и впоследствии восстанавливать нужную версию (ревизию) при помощи svn export. Веб-дизайнер или программист создает копию репозитория при помощи svn checkout, вносит изменения и передает их на сервер командой svn commit, для получения последних изменений используется команда svn update.

Преимущество  такого подхода состоит в том что всегда можно восстановить работоспособную версию веб-сайта, а программисты или веб-дизайнеры работают с локальной копией (обычно на ней базируется веб-сайт с другим именем) и не затрагивают основной проект, всегда можно просмотреть кто и какие изменения вносил.

2. Установка

Самая простая часть работы с SubVersion – это установка. Устанавливаем:

[root@svnsrv ~]# yum install subversion

Создаем директорию для репозиториев:

[root@svnsrv /]# mkdir /var/www/svn

Это корневая директория и в ней будут располагаться все наши проекты.

3. Основные приемы работы

Все примеры приводятся на локальном репозитории к которому мы получаем доступ через файловую систему, о настройке и работе через удаленное соединение я расскажу ниже. Документы веб-проекта mysite.ru находятся в папке /sites/mysite.ru/html, создадим для него репозиторий SubVesion:

[root@svnsrv ~]# mkdir -p /var/www/svn/mysite.ru
[root@svnsrv ~]# svnadmin create /var/www/svn/mysite.ru

Загружаем данные в репозиторий:

[root@svnsrv ~]# svn import /sites/mysite.ru/html file:///var/www/svn/mysite.ru -m "Startup svn for www.mysite.ru"
Adding         /sites/mysite.ru/html/index.html
 
Committed revision 1.

После параметра -m [--message] идет пояснение к производимому действию, эт