Настройка сервера svn (svnserve)

subversion1Для начала как обычно посмотрел что там доступно под Linux, что при этом начиналось бы с svn. Заинтересовала утилита . Когда я понял что особо толку от 'svnadmin ' не будет, то первым делом поглядел в ман. Разочаровался. Такого почти бесполезного мана я еще не видел :(

кстати, 'svnadmin help' дал мне достаточно информации по которой я даже, как позже выяснилось, смог сделать первый свой репозиторий:
svnadmin create //kostik/my-svn-dir

Выглядело это более чем странно: папка my-svn-dir содержала несколько файлов и подпапок. По моим соображениям в какой-то из них должен был быть «корень» репозитория как в каком-нить web-сервере. Не нашел. В файле conf/svnserve.conf я нашел настройки репозитория, в passwd — настроил даже пользователя и пароль. А дальше ступор.

Уповая на то, что в TortoiseSVN найдется документация (как-никак установщик весит аж 17,5 метров! это при том что KDEшный -mingw всего 580 килобайт!) я полез в C:\Program files\TortoiseSVN\. То что я увидел — несколько обескуражило:
В комплекте есть хорошая справка по TortoiseSVN и вообще, с объяснением принципа работы Subversion, но при этом вообще отсутствовали утилиты svn, svnserve, svnadmin и иже с ними!

Перелопатив справку я нашел вариант установки сервера с . Ну, XAMPP у меня уже был, поэтому дело было за малым. Сделал как в инструкции — не работает. При чекауте пишет что 403 forbidden и все. При просмотре в браузере тоже толку маловато. Где-то чего-то проглядел.
Тыкался и так, и эдак — ноль. Пролистал справку раза три. Нашел как поднять сервер без Apache на том что уже есть — svnserve.
В итоге команда
svnserve --daemon --root=/home/kostik/my-svn-dir

запустила нужный сервер и после этого с помощью TortoiseSVN с машины я выбрал опцию Repo-browser и увидел все дерево нового репозитория — чистый лист =) Хорошо что в том же окне легко было просто добавить нужные файлы в репозиторий через правый клик.

Настройка SVN сервера и репозитория

Итак, попробую теперь без лирики описать вкратце что нужно сделать.

Исходные данные:
Имя пользователя для доступа к репозиторию: kostik
Пароль: example_password
Директория в которой будет храниться репозиторий: /home/kostik/my-svn-dir для Linux и C:\my-svn-dir для Windows (папка может не существовать вообще, но должна быть обязательно пустой!).
Папка для рабочей копии с кодом: /home/kraplax/myProject или C:\myProject (папка может не существовать вообще, но должна быть обязательно пустой!)
Установите достаточно полный пакет Subversion.
Для *buntu и Debian это будет скорее всего так: sudo apt-get install subversion

Для Mandriva это будет скорее всего так:
su

urpmi subversion

OpenSuse не пользовал, но, думаю логику вы уже уловили.
В Windows установите любой дистрибутив Subversion, например Slik subversion — он содержит необходимые нам svn, svnadmin и svnserve.
Далее команды даны так, как если бы папка установки Subversion была в вашей переменной PATH.
В консоли выполните следующее:
svnadmin create /home/kostik/my-svn-dir

для Windows:
svnadmin create C:\my-svn-dir

В вашем любимом редакторе откройте файл /home/kostik/my-svn-dir/conf/svnserve.conf (для Windows — C:\my-svn-dir\conf\svnserve.conf) и раскомментируйте (удалите символ # в начале строки) следующие строки:

#для запрета анонимного доступа

anon-access = none

#для разрешения доступа на запись тем, кто авторизировался

auth-access = write

#для указания на файл паролей

password-db = passwd

#для указания на файл политик пользователей

authz-db = authz

Если в предыдущем шаге вы решили использовать файл паролей passwd — тогда открывайте его в любом редакторе (он лежит рядом с файлом svnserve.conf). Если файла нет — создайте его и добавьте новых пользователей по следующей схеме:
[users]

#пользовател = пароль

kostik = example_password

Запускаем сервер Subversion:
svnserve --daemon --root /home/kostik/my-svn-dir

в случае с Windows достаточно заменить путь к репозиторию. Однако, вы, возможно, захотите запускать сервер как сервис Windows. В таком случае вам нужно его зарегистрировать в системе:
sc create svnservice binPath= «svnserve.exe --service

--root C:\my-svn-dir» displayname= «Subversion service» depend= tcpip start= auto

Будьте внимательны! После знаков '=' стоит пробел!
Теперь автоматический запуск новоиспеченной службы svnservice вам обеспечен. Чтобы удалить службу — выполните следующее
sc delete svnservice

Теперь в консоли делаем:
svn co svn://kostik@localhost/ /home/kostik/myProject

или для Windows:
svn co svn://kostik@localhost/ C:\myProject

В результате в консоли увидим строку
Checked out revision 0.

Это правильно, ибо мы пока ничего не добавляли в репозиторий. Пора бы сделать это.

Скинем наши начальные наработки (допустим, файл main.cpp) в /home/kostik/myProject (или C:\myProject). Перейдем в папку рабочей копии и добавим main.cpp в систему Subversion:
svn add main.cpp

Собственно — все. Теперь любое изменение в файле main.cpp можно коммтить с помощью команды
svn commit -m «Текст сообщения для коммит-логов»

Когда к проекту добавятся новые файлы их также добавляем с помощью svn add.
Но, при дальнейшем использовании Subversion вы вскоре освоитесь с ней, и, возможно, решите воспользоваться графическим интерфейсом в виде QSvn или TortoiseSVN.

Вот и все. Это не так сложно как кажется в самом начале

И на последок напомню что работает сервер svn на порте 3690 (svn://localhost:3690)

Запись навигация

Top