Это старая версия документа.


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.

Direct repository access (file://)

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

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

или

svn co file://localhost/path/to/repos/project
Если вы не указываете сетевое имя, требуется три прямых слеша (///) - два для обозначения протокола (в данном случае - file), плюс лидирующий слеш в адресе. Если вы указываете сетевое имя, вы должны указать два слеша (//).

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

Доступ через протокол 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 созданы в каталоге /home/svn/ с использованием команды svnadmin. Они могут быть доступны по адресу http://hostname/svn/repos_name.

Для импорта или фиксации файлов в вашем Subversion хранилище по HTTP, хранилищем должен владеть HTTP пользователь. В Ubuntu системах обычно пользователем HTTP является www-data. Для изменения владельца файлов хранилища введите следующую команду в терминале:

sudo chown -R www-data:www-data /path/to/repos
Изменяя владельца хранилища на www-data вы не позволите импортировать или фиксировать файлы внутри хранилища командой svn import file:/// любому пользователю кроме www-data.

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

sudo htpasswd -c /etc/subversion/passwd user_name

Чтобы добавить дополнительных пользователей, опустите опцию "-c", поскольку она заменяет старый файл. Вместо этого используйте такой вариант:

sudo htpasswd /etc/subversion/passwd user_name

Эта команда запросит у вас ввод пароля. Как только вы введете пароль, пользователь будет добавлен. Теперь для доступа к хранилищу вы можете выполнить следующую команду:

svn co http://servername/svn
Пароль передается открытым текстом. Если вы беспокоитесь о перехвате пароля, в стоит использовать шифрование SSL. Детали смотрите в следующей части.

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

Accessing Subversion repository via WebDAV protocol with SSL encryption (https:) is similar to http: except that you must install and configure the digital certificate in your Apache2 web server. To use SSL with Subversion add the above Apache2 configuration to /etc/apache2/sites-available/default-ssl. For more information on setting up Apache2 with SSL see HTTPS Configuration.

You can install a digital certificate issued by a signing authority. Alternatively, you can install your own self-signed certificate.

This step assumes you have installed and configured a digital certificate in your Apache 2 web server. Now, to access the Subversion repository, please refer to the above section! The access methods are exactly the same, except the protocol. You must use https: to access the Subversion repository. ===Access via custom protocol (svn:)===

Once the Subversion repository is created, you can configure the access control. You can edit the /path/to/repos/project/conf/svnserve.conf file to configure the access control. For example, to set up authentication, you can uncomment the following lines in the configuration file:

# [general] # password-db = passwd

After uncommenting the above lines, you can maintain the user list in the passwd file. So, edit the file passwd in the same directory and add the new user. The syntax is as follows:

username = password

For more details, please refer to the file.

Now, to access Subversion via the svn: custom protocol, either from the same machine or a different machine, you can run svnserver using svnserve command. The syntax is as follows: $ svnserve -d –foreground -r /path/to/repos # -d – daemon mode # –foreground – run in foreground (useful for debugging) # -r – root of directory to serve For more usage details, please refer to: $ svnserve –help Once you run this command, Subversion starts listening on default port (3690). To access the project repository, you must run the following command from a terminal prompt: svn co svn:hostname/project project –username user_name

Based on server configuration, it prompts for password. Once you are authenticated, it checks out the code from Subversion repository. To synchronize the project repository with the local copy, you can run the update sub-command. The syntax of the command, entered at a terminal prompt, is as follows:

cd project_dir ; svn update

For more details about using each Subversion sub-command, you can refer to the manual. For example, to learn more about the co (checkout) command, please run the following command from a terminal prompt:

svn co help

Access via custom protocol with SSL encryption (svn+ssh://)

The configuration and server process is same as in the svn: method. For details, please refer to the above section. This step assumes you have followed the above step and started the Subversion server using svnserve command. It is also assumed that the ssh server is running on that machine and that it is allowing incoming connections. To confirm, please try to login to that machine using ssh. If you can login, everything is perfect. If you cannot login, please address it before continuing further. The svn+ssh: protocol is used to access the Subversion repository using SSL encryption. The data transfer is encrypted using this method. To access the project repository (for example with a checkout), you must use the following command syntax:

svn co svn+ssh:hostname/var/svn/repos/project You must use the full path (/path/to/repos/project) to access the Subversion repository using this access method. Based on server configuration, it prompts for password. You must enter the password you use to login via ssh. Once you are authenticated, it checks out the code from the Subversion repository. —- <style float-right> <-назад | далее-></style>