Система управления версиями (SVN), работа с репозиторием

Система управления версиями SVN (Subversion) — система с открытым исходным кодом, широко применяется и уступает по популярности только GIT.



Управление версиями файлов, в принципе, предоставляет возможность отслеживать историю изменений и восстанавливать состояние файлов на момент «сохранения».



Использовать будем образ Debian7, такая же машина используется в качестве клиента — с нее будем подключаться к репозиторию

apt-cache search subversion

Проверяем имя пакета, чаще всего это subversion


Устанавливаем при помощи apt-get install

apt-get install subversion

dpkg -l | grep subversion

ii  subversion                      1.8.9-1~bpo70+1                    amd64        Advanced version control system

 

Работа с локальным репозиторием SVN

svnadmin create /home/svn

Смотрим информацию по репозиторию

svn info file:///home/svn

В нем ничего нет о чем говорит запись Last Changed Rev: 0. Данное значение увеличивается с каждым новым «коммитом», поскольку их не было и информации в репозитории не содержится число ревизий равно нулю.

Path: svn
URL: file:///home/svn
Relative URL: ^/
Repository Root: file:///home/svn
Repository UUID: 5718294f-ff89-4950-8af1-f8e9d6ea408a
Revision: 0
Node Kind: directory
Last Changed Rev: 0
Last Changed Date: 2017-02-15 15:09:05 +0000 (Срд, 15 Фев 2017)

 

Создадим и добавим файлы в репозиторий

svn import docs file:///home/svn -m «let's get started»

Adding         docs/file1.txt
Adding         docs/file2.txt
Adding         docs/file3.txt

 

-m — ключ за которым следует комментарий

Файлы, которые добавляются в репозиторий должны быть размещены в каталоге /root/docs — его предварительно следует создать

 

Смотрим информацию по репозиторию, видим что номер ревизии обновился Revision: 1, также отображается дата последней модификации

svn info file:///home/svn

Path: svn
URL: file:///home/svn
Relative URL: ^/
Repository Root: file:///home/svn
Repository UUID: 5718294f-ff89-4950-8af1-f8e9d6ea408a
Revision: 1
Node Kind: directory
Last Changed Author: root
Last Changed Rev: 1
Last Changed Date: 2017-02-15 15:17:13 +0000 (Срд, 15 Фев 2017)

 

Смотрим, что находится в репозитории

svn list file:///home/svn

 

file1.txt
file2.txt
file3.txt


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

svn co file:///home/svn

A svn/file1.txt
A svn/file2.txt
A svn/file3.txt

Checked out revision 1.

 

Дополним один из файлов и «закоммитим» изменения:

mcedit svn/file1.txt

adding some text



ESC и сохраняем изменения

cd /home/svn

svn commit -m «added some text»

Sending        file1.txt
Transmitting file data .
Committed revision 2.

 

Номер ревизии обновился, изменения, внесенные в файл, сохранились.

Таким образом производится работа с локальным репозиторием, при использовании репозитория удаленного доступ осуществляется по протоколам https или svn+ssh. При работе с использованием веб-сервера доступ ограничивается посредством .htpasswd.



Работа с удаленным репозиторием SVN

Работа с удаленным репозиторием SVN — доступ сейчас получаем к тому же репозиторию, но с другой машины (предварительно на сервере vm создан системный пользователь svnuser, ему задан пароль)

На машине, с которой выполняется подключение (vm2), также должен быть установлен пакет subversion

root@vm2:~# svn co svn+ssh://svnuser@vm/home/svn

The authenticity of host 'vm (123.123.123.123)' can't be established.
ECDSA key fingerprint is a6:00:b5:cf:37:ac:25:84:c0:45:57:d4:01:d0:c1:53.
Are you sure you want to continue connecting (yes/no)?

 

svnuser@vm's password:

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

A    svn/file1.txt
A    svn/file2.txt
A    svn/file3.txt
Checked out revision 2.

 

cd svn/ && ls

file1.txt  file2.txt  file3.txt

Система управления версиями svn настраивается в базовом виде так.

 

В настоящее время гораздо шире для разработки используется git