Subversion (SVN - Concurrent Versions System), централизованная система управления версиями. Разработана в качестве замены для CVS, имеет тот-же функционал, однако лишена многих ее недостатков.
Смотри так-же: SVN book.
/home/svn/
, должна существовать:
# svnadmin create --fs-type fsfs /home/svn/project1Подключиться к репозитарию можно следующими способами:
file://
Прямой доступ через файловую систему с помощью SVN клиента. В локальной файловой системе должны быть корректно настроены привилегии. svn://
или svn+ssh://
Удаленный доступ к SVN серверу (так-же через SSH). Требуются права в локальной ФС, порт по-умолчанию: 2690/tcp.http://
Удаленный доступ через webdav, используя apache. Для данного метода не требуется наличие локальных пользователей.# svn import /project1/ file:///home/svn/project1/trunk -m 'Initial import' # svn checkout file:///home/svn/project1
Удаленный доступ по SSH не требует каких-то доаолнительных настроек, просто замените file://
на svn+ssh/hostname
. Например:
# svn checkout svn+ssh://hostname/home/svn/project1Как и в случае локального доступа, пользователь должен иметь аккаунт, для доступа по SSH на сервер, и корректно настроенные права на чтение/запись. Данный метод может быть пригоден для небольших групп пользователей, пользователи входящие в группу, являются владельцами хранилища, например:
# groupadd subversion # groupmod -A user1 subversion # chown -R root:subversion /home/svn # chmod -R 770 /home/svn
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so # Только для контроля доступа
<Location /svn>
DAV svn
# URL "/svn/foo" будет отображен на путь репозитария /home/svn/foo
SVNParentPath /home/svn
AuthType Basic
AuthName "Subversion repository"
AuthzSVNAccessFile /etc/apache2/svn.acl
AuthUserFile /etc/apache2/svn-passwd
Require valid-user
</Location>
Сервер Apache должен иметь полный доступ к репозитарию:
# chown -R www:www /home/svnСоздание пользователя с помощью
htpasswd2
:
# htpasswd -c /etc/svn-passwd user1 # -c Создать файл
# По-умолчанию доступ на чтение. "* =" по-умолчанию не будет иметь доступа [/] * = r [groups] project1-developers = joe, jack, jane # Дать права на запись разработчикам [project1:] @project1-developers = rw
import
. Эта-же команда используется и для добавления директории с ее содержимым в уже существующий проект.
# svn help import # Помощь по команде
# Добавить новую директорию и ее содержимое в директорию src
, проекта project1.
# svn import /project1/newdir http://host.url/svn/project1/trunk/src -m 'add newdir'
# svn co http://host.url/svn/project1/trunk # Оформить заказ на последнюю версию # Тэги и ветки создаются с помощью копирования # svn mkdir http://host.url/svn/project1/tags/ # Создать директорию tags # svn copy -m "Tag rc1 rel." http://host.url/svn/project1/trunk \ http://host.url/svn/project1/tags/1.0rc1 # svn status [--verbose] # Проверить состояние файлов в рабочей директории # svn add src/file.h src/file.cpp # Добавить два файла # svn commit -m 'Added new class file' # Закоммитить изменения сообщением # svn ls http://host.url/svn/project1/tags/ # Список всех тэгов # svn move foo.c bar.c # Переместить (переименовать) файлы # svn delete some_old_file # Удалить файлы