Содержание
Subversion
Subversion - это система контроля версий с открытым кодом. Используя Subversion вы можете записывать историю исходных файлов и документов. Она управляет файлами и каталогами во времени. Дерево файлов располагается в центральном хранилище. Хранилище больше похоже на обычный файл-сервер, за исключением того, что он помнит каждое изменение когда-либо сделанное в файлах или каталогах.
Установка
Для доступа к хранилищу Subversion с помощью протокола HTTP вы должны установить и настроить web сервер. Apache2 гарантированно работает с Subversion. Пожалуйста, обратитесь к разделу Apache2 для установки и настройки Apache2. Для доступа к хранилищу Subversion по протоколу HTTPS вам потребуется установить и настроить цифровой сертификат для вашего Apache2 сервера. Пожалуйста, обратитесь к подразделу HTTPS в разделе по Apache2 для установки и настройки цифрового сертификата.
Для установки Subversion выполните следующую команду в терминале:
sudo apt-get install subversion libapache2-svn
Настройка сервера
Этот шаг подразумевает, что вы уже установили упоминавшиеся выше пакеты на вашей системе. В этом разделе описывается как создать хранилище Subversion и получить доступ к проекту.
Создание хранилища Subversion
Хранилище Subversion может быть создано с помощью следующей команды в терминале:
svnadmin create /path/to/repos/project
Импортирование файлов
После того, как вы установили хранилище, вы можете импортировать в него файлы. Для импорта каталога, ведите следующее в терминале:
svn import /path/to/import/directory file:///path/to/repos/project
Методы доступа
Хранилище Subversion может быть доступно множеством различных способов - на локальном диске или через различные сетевые протоколы. Однако, размещение хранилища - это всегда url адрес. Таблица описывает как различные URL схемы связаны с возможными методами доступа.
Методы доступа
Схема | Метод доступа |
---|---|
file:// | Прямо доступ к хранилищу (на локальном диске) |
http:// | Доступ через протокол WebDAV к web-серверу Apache2, настроенному на Subversion |
https:// | То же самое, что и http://, но с использованием шифрования SSL |
svn:// | Доступ через собственный протокол к серверу svnserve |
svn+ssh:// | То же самое, что svn://, но через туннель SSH |
В этом разделе мы рассмотрим как настроить Subversion для всех этих методов доступа. Здесь мы рассмотрим основное. Для более продвинутого использования, обратитесь к книге svn book.
Прямой доступ к хранилищу (file://)
Это самый простой из всех методов доступа. Он не требует запуска какого-либо сервера Subversion. Этот метод используется для доступа к Subversion на этой же машине. Синтаксис команды, вводимой в терминале, аналогичен следующему:
svn co file:///path/to/repos/project
или
svn co file://localhost/path/to/repos/project
Права доступа к хранилищу определяются правами файловой системы. Если пользователь имеет право на чтение/запись, он может получить содержимое хранилища и внести изменения.
Доступ через протокол WebDAV (http://)
Для доступа к хранилищу Subversion через протокол WebDAV вам потребуется настроить сервер Apache2. Добавьте следующий фрагмент между элементами <VirtualHost> и </VirtualHost> в /etc/apache2/sites-available/default или иной VirtualHost файл:
<Location /svn> DAV svn SVNPath /home/svn AuthType Basic AuthName "Your repository name" AuthUserFile /etc/subversion/passwd Require valid-user </Location>
Для импорта или фиксации файлов в вашем Subversion хранилище по HTTP, хранилищем должен владеть HTTP пользователь. В Ubuntu системах обычно пользователем HTTP является www-data. Для изменения владельца файлов хранилища введите следующую команду в терминале:
sudo chown -R www-data:www-data /path/to/repos
Далее вы должны создать файл /etc/subversion/passwd, который будет содержать подробности аутентификации пользователей. Для создания файла используйте следующую команду в командной строке (которая создаст файл и добавит первого пользователя):
sudo htpasswd -c /etc/subversion/passwd user_name
Чтобы добавить дополнительных пользователей, опустите опцию "-c", поскольку она заменяет старый файл. Вместо этого используйте такой вариант:
sudo htpasswd /etc/subversion/passwd user_name
Эта команда запросит у вас ввод пароля. Как только вы введете пароль, пользователь будет добавлен. Теперь для доступа к хранилищу вы можете выполнить следующую команду:
svn co http://servername/svn
Доступ по протоколу WebDAV с шифрованием SSL (https://)
Доступ к хранилищу Subversion по протоколу WebDAV с SSL шифрованием (https://) аналогичен http:// за исключением что вы должны установить и настроить цифровой сертификат для вашего Apache2 сервера. Для использования SSL с Subversion добавьте конфигурацию приведенную выше в файл /etc/apache2/sites-available/default-ssl. Для дополнительной информации по установке Apache2 с SSL смотрите настройку HTTPS.
Вы можете установить цифровой сертификат, выпущенный центром сертификации. В качестве альтернативы можно использовать самоподписанный сертификат.
Эта часть подразумевает, что вы установили и настроили цифровой сертификат в вашем сервере Apache2. Теперь чтобы получить доступ к хранилищу Subversion смотрите предыдущий раздел. Метод доступа практически тот же самый, за исключением протокола. Вы должны использовать https:// для доступа к хранилищу Subversion.
Доступ через собственный протокол (svn://)
Как только создано хранилище Subversion, вы можете настроить контроль доступа. Вы можете отредактировать файл /path/to/repos/project/conf/svnserve.conf для изменения контроля доступа. Например, для установки авторизации вы можете раскомментировать следующие строки в файле конфигурации:
# [general] # password-db = passwd
После снятия знака комментария (#) с этих строк, вы можете поддерживать список пользователей в файле passwd. И так, редактируйте файл passwd в этом же каталоге и добавляйте новых пользователей. Синтаксис должен быть таким:
username = password
Более подробно смотрите комментарии в самом файле.
Теперь, чтобы подключиться к Subversion через собственный протокол svn://, с этой же машины или другой, вы можете запустить svnserver с помощью команды svnserve. Синтаксис следующий:
$ svnserve -d --foreground -r /path/to/repos # -d - режим сервиса # --foreground - запуск в фоновом режиме (полезно при отладке) # -r - корневой каталог для обслуживания
$ svnserve --help
Как только вы выполните указанную команду, Subversion запустится на порту по умолчанию (3690). Для доступа к хранилищу проектов вам потребуется выполнить следующую команду из терминала:
svn co svn://hostname/project project --username user_name
Основываясь на конфигурации сервера, у вас будет запрошен пароль. После аутентификации будет проверен код из хранилища Subversion. Для синхронизации проекта из хранилища с локальной копией вам потребуется выполнить подкоманду update. Синтаксис команды, вводимой в терминале следующий:
cd project_dir ; svn update
Для подробной информации о каждой подкоманде Subversion вы можете обратиться к встроенному руководству. Например, чтобы узнать больше о команде co (checkout) выполните следующую команду в терминале:
svn co help
Доступ по собственному протоколу с SSL шифрованием (svn+ssh://)
Настройка и работа сервера такая же, как при svn:// методе. Детали описаны в предыдущей части.Этот шаг предполагает, что вы следовали инструкциям предыдущей части и запустили сервер Subversion с помощью команды svnserve.
Также предполагается, что у вас на машине запущен сервер ssh и он разрешает входящие соединения. Для проверки, пожалуйста, попробуйте войти на машину с использованием ssh. Если вам удалось соединиться, все замечательно. Если соединиться не получилось, обратитесь к данной проблеме, прежде чем следовать дальше.
Протокол svn+ssh:// используется для доступа к хранилищу Subversion с использованием SSL шифрования. Данные передаются шифрованными с использованием этого метода. Для доступа к проекту в хранилище (например, с командой checkout) вам нужно использовать следующую команду:
svn co svn+ssh://hostname/var/svn/repos/project
Основываясь на настройках сервера, будет запрошен пароль. Вы должны будете ввести пароль, который используете при доступе через ssh. После аутентификации команда проверит код из хранилища Subversion.