Подключиться к репозитарию можно следующими способами:
file:// - Прямой доступ через файловую систему с помощью SVN клиента. В локальной файловой системе должны быть корректно настроены привилегии.
svn:// или svn+ssh:// - Удаленный доступ к SVN серверу (так-же по протоколу SSH). Требуются права в локальной файловой системе, порт по-умолчанию: 2690/tcp.
http:// Удаленный доступ через webdav, используя apache. Для данного метода не требуется наличие локальных пользователей.
Импорт и проверка существующего проекта через локальную файловую систему. В рабочую директорию заходить не обязательно, можно просто указать полный путь:
Как и в случае локального доступа, пользователь должен иметь аккаунт, для доступа по протоколу SSH на сервер, и корректно настроенные права на чтение/запись. Данный метод может быть пригоден для небольших групп пользователей, пользователи входящие в группу, являются владельцами хранилища, например:
Удаленный доступ черз HTTP(HTTPS), подходящее решение для удаленных групп пользователей. Этот метод использует авторизацию веб сервера Apache(не локальные аккаунты). Вот типичная конфигурация Apache:
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 # Только для контроля доступа
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
Сервер Apache должен иметь полный доступ к репозитарию:
# chown -R www:www /home/svn
Создание пользователя с помощью htpasswd:
# htpasswd -c /etc/svn-passwd user1 # -c Создать файл
Контроль доступа svn.acl, пример
# По-умолчанию доступ на чтение. "* =" по-умолчанию не будет иметь доступа
[/]
* = 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
# 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 # Удалить файлы