Subversion

Subversion - это система контроля версий с открытым исходным кодом. Используя Subversion вы можете сохранять историю изменений файлов и документов. Дерево файлов и папок хранится в центральном репозитории похожем на обыкновенный файловый архив, за исключеним того, что сохраняются любые их модификации.

Установка

Для доступа к репозиторию Subversion, посредством HTTP протокола, вы должны установить и настроить веб сервер. Apache2 гарантированно работает с Subversion. Для установки и настройки сервера Apache2, обратитесь к подразделу HTTP раздела Apache2. Для доступа к репозиторию Subversion, посредством HTTPS протокола, вы должны установить и настроить цифровой сертификат в веб сервере Apache2. Для установки и настройки цифрового сертификата, обратитесь к подразделу HTTPS раздела Apache2.

Для установки Subversion выполните следующую команду в терминале:

sudo apt-get install subversion libapache2-svn

Конфигурация сервера

Данный шаг подразумевает, что вы установили в систему пакеты, отмеченные выше. Данная секция объясняет как создать репозиторий Subversion и получить доступ к проекту

Создания репоизитория Subversion

Репозиторий Subversion может быть создан используя следующую команду:

svnadmin create /path/to/repos/project

Методы доступа

Репозиторий Subversion может быть доступен разными способами - на локальном диске или через разные сетевые протоколы. В любом случае, расположение репозитория всегда ссылка (URL). Таблица объясняет разные схемы ссылок в доступных методах доступа.

Таблица 13.1. Методы доступа

Схема

Метод доступа

file://

прямой доступ к репозиторию (на локальном диске)

http://

Доступ по протоколу WebDAV к вебсерверу Apache2, умеющему работать с системой Subversion

https://

То же самое, что и http://, но с SSL шифрованием

svn://

Доступ через выборочный протокол к серверу svnserve

svn+ssh://

То же самое, что и svn://, но через SSH тунель


В этой секции объясняется как настроить Subversion для всех этих методов доступа. Здесь мы описываем основы. Для более детального описания, обратитесь к книге svn.

Прямой доступ к репозиторию (file://)

Это самый простой из всех методов доступа. Он не требует запуска никакого процесса сервера Subversion. Этот метод доступа используется для доступа к Subversion с той же машины. Синтакс команды, введенной в строке терминала, следующий:

svn co file:///path/to/repos/project

или

svn co file://localhost/path/to/repos/project

[Замечание]

Если вы не указали имя хоста, используйте три слэша (///) - два для протокола (в данном случае - файл) плюс первый слэш в пути. Если вы указали имя хоста, используйте два слеша (//).

Права доступа к репозиторию зависят от прав доступа к файловой системе. Если пользователь обладает правами на чтение/запись - он может производить отладку и вносить изменения в репозиторий

Доступ через протокол WebDAV (http://)

Для доступа к репозиторию Subversion через протокол WebDAV необходимо сконфигурировать сервер Apache 2. Добавьте этот фрагмент в файл /etc/apache2/apache2.conf:

 <Location /svn>
  DAV svn
  SVNPath /путь/к/репозиторию
  AuthType Basic
  AuthName "Название репозитория"
  AuthUserFile /etc/subversion/passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
  Require valid-user
  </LimitExcept>
  </Location> 

Следующим шагом необходимо создать файл /etc/subversion/passwd. Этот файл содержит настройки идетнификации. Для добавления записи, например новго пользователя, Вы можете запустить эту команду из окна терминала:

htpasswd2 /etc/subversion/passwd имя_пользователя

Команда запросит ввести пароль. Как только пароль будет введён - пользователь будет добавлен. Теперь что бы получить доступ к репозиторию Вам необходимо выполнить эту команду:

            
              svn co http://имясервера/svn
            
          
[Внимание]

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

Доступ к протоколу WebDAV с применением SSL (https://)

Доступ к репозиторию Subversion через протокол WebDAV с применением SSL (https://) похож на http://, за исключением того, что в веб сервере Apache 2 необходимо установить и сконфигурировать цифровой сертификат.

Можно установить цифровой сертификат выданный такой организацией, как Verisign или сертификат, подписанный Вами.

Этот шаг подразумевает, что у вас есть установленный и сконфигурированный цифровой сертификат в веб сервере Apache 2. Для доступа к репозиторию Subversion, обязательно ознакомьтесь с предыдущей секцией! Спобобы доступа такие же, за исключением протокола. Необходимо использовать https:// для доступа к репозиторию Subversion.

Доступ с использованием своего протокола (svn://)

Как только репозиторий Subversion будет создан, можно будет сконфигурировать контроль доступа. Для изменения контроля доступа измените файл /путь/к/репозиторию/проект/conf/svnserve.conf. Например, для включения аутентификации, уберите комментарий на следующих строчках:

# [general]
# password-db = passwd

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

username = password

Что бы получить больше информации посмотрите файл.

Теперь что бы получить доступ к Subversion через свой протокол svn:// с того же или с другого компьютера, Вы можете запустить сервер Subversion используя комманду svnserve. Синтаксис:

$ svnserve -d --foreground -r /путь/к/репозиторию
# -d -- daemon режим сервиса (невидимый)
# --foreground -- запустить на консоль (полезно для отладки)
# -r -- корень репозитория

Для подробного описания использования команды выполните команду:
$ svnserve --help

После запуска этой команды Subversion будет запущен на порту 3690. Для того, что бы сменить репозиторий, необходимо выполнить команду:

svn co svn://имяхотса/проект проект --username имя_пользователя

Если в кониге указано, будет запрошен пароль. После аутентификации, будет проверен код из репозитория Subversion. Для синхронизации локальной копии и репозитория проекта можно выполнить под-команду update. Синтакс введённой команды следующий.

cd директория_проекта ; svn update

Вы можете обратиться к инструкции пользователя, если вас интересует детали использования каждой под-команды Subversion. На пример, что бы узнать больше про комманду "co", запустите эту команду:

            
              svn co help
            
          

Доступ используя нестандартный протокол с поддержкой SSL (svn+ssh://)

Конфигурация и процесс сервера такие же как и в случае с svn://. Более подробно описано в предыдущей секции. На этом этапе подразумевается что Вы выполнили предыдущие шаги и запустили сервер Subversion, используя комманду svnserve

Так же подразумевается, что на том же компьютере запущен сервер SSH и на него разрешены входящие соединения. Что бы проверить, попробуйте подключиться к этому компьютеру используя SSH. Если вы зашли в этот компьютер, значит всё замечательно. Если вы не можете войти в этот компьютер, решите эту проблему перед тем, как приступать к дальнейшим шагам.

Протокол svn+ssh:// используется если необходимо подключиться к репозиторию Subversion используя SSL. В этом случае все передаваемые данные будут зашифрованы. Для доступа к репозиторию проекта необходимо использовать следующую комманду:

svn co svn+ssh://hostname/var/svn/репозиторий/проект

[Замечание]

Что бы получить доступ к репозиторию Subversion используя этот метод, необходимо ввести полный путь (/путь/к/репозиторию/проекту).

Если в указано в настройках будет запрошен пароль. Необходимо ввести пароль, используемый при подключении через SSH. Если пароль верный, будет проверен код из репозитория Subversion.