Kraplax 26.02.2009 20:44
How-to`s — Настройка SVN сервера и создание SVN репозитория
Намедни отключили меня за неуплату интернета. Ну, опомнился я только вечером, когда все уже закрыто, поэтому что еще делать когда ты оффлайн? Правильно, кодить =)А для этого поставил перед собой такую задачу - создать свой сервер SVN и репозиторий для кода.
В поисках ответа
Внимание! Если вы не желаете читать то, как я добирался до этого сам - ныряйте вниз до следующего заголовка.
Пошарив в закромах я понял что у меня под рукой было следующее:
TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi
Slik-Subversion-1.5.4-win32.msi
subversion-mingw-1.5.0-svn-bin.zip
Это из залежей на Windows. Причем, последний архив предназначен для установки в KDE для Windows.
В Linux'е все еще скромнее - установлен пакет subversion. Все :/
Хм... поглядим что можно из этого сварить при условии что интернета нет и гуглить не получится.
Для начала как обычно посмотрел что там доступно под Linux, что при этом начиналось бы с svn. Заинтересовала утилита svnadmin. Когда я понял что особо толку от 'svnadmin help' не будет, то первым делом поглядел в ман. Разочаровался. Такого почти бесполезного мана я еще не видел :(
кстати, 'svnadmin help' дал мне достаточно информации по которой я даже, как позже выяснилось, смог сделать первый свой репозиторий:
1 |
|
Выглядело это более чем странно: папка my-svn-dir содержала несколько файлов и подпапок. По моим соображениям в какой-то из них должен был быть "корень" репозитория как в каком-нить web-сервере. Не нашел. В файле conf/svnserve.conf я нашел настройки репозитория, в passwd - настроил даже пользователя и пароль. А дальше ступор.
Уповая на то, что в TortoiseSVN найдется документация (как-никак установщик весит аж 17,5 метров! это при том что KDEшный subversion-mingw всего 580 килобайт!) я полез в C:\Program files\TortoiseSVN\. То что я увидел - несколько обескуражило:
В комплекте есть хорошая справка по TortoiseSVN и SVN вообще, с объяснением принципа работы Subversion, но при этом вообще отсутствовали утилиты svn, svnserve, svnadmin и иже с ними!
Перелопатив справку я нашел вариант установки сервера с Apache. Ну, XAMPP у меня уже был, поэтому дело было за малым. Сделал как в инструкции - не работает. При чекауте пишет что 403 forbidden и все. При просмотре в браузере тоже толку маловато. Где-то чего-то проглядел.
Тыкался и так, и эдак - ноль. Пролистал справку раза три. Нашел как поднять сервер без Apache на том что уже есть - svnserve.
В итоге команда
1 |
|
запустила нужный сервер и после этого с помощью TortoiseSVN с машины Windows я выбрал опцию Repo-browser и увидел все дерево нового репозитория - чистый лист =) Хорошо что в том же окне легко было просто добавить нужные файлы в репозиторий через правый клик.
Настройка SVN сервера и репозитория
Итак, попробую теперь без лирики описать вкратце что нужно сделать. Исходные данные:
Имя пользователя для доступа к репозиторию: kraplax
Пароль: example_password
Директория в которой будет храниться репозиторий: /home/kraplax/my-svn-dir для Linux и C:\my-svn-dir для Windows (папка может не существовать вообще, но должна быть обязательно пустой!).
Папка для рабочей копии с кодом: /home/kraplax/myProject или C:\myProject (папка может не существовать вообще, но должна быть обязательно пустой!)
Установите достаточно полный пакет Subversion.
Для *buntu и Debian это будет скорее всего так:
1 |
|
Для Mandriva это будет скорее всего так:
1 |
|
OpenSuse не пользовал, но, думаю логику вы уже уловили.
В Windows установите любой дистрибутив Subversion, например Slik subversion - он содержит необходимые нам svn, svnadmin и svnserve.
Далее команды даны так, как если бы папка установки Subversion была в вашей переменной PATH.
В консоли выполните следующее:
1 |
|
для Windows:
1 |
|
В вашем любимом редакторе откройте файл /home/kraplax/my-svn-dir/conf/svnserve.conf (для Windows - C:\my-svn-dir\conf\svnserve.conf) и раскомментируйте (удалите символ # в начале строки) следующие строки:
Если в предыдущем шаге вы решили использовать файл паролей passwd - тогда открывайте его в любом редакторе (он лежит рядом с файлом svnserve.conf). Если файла нет - создайте его и добавьте новых пользователей по следующей схеме:
1 |
|
Запускаем сервер Subversion:
1 |
|
в случае с Windows достаточно заменить путь к репозиторию. Однако, вы, возможно, захотите запускать сервер как сервис Windows. В таком случае вам нужно его зарегистрировать в системе:
1 |
|
Будьте внимательны! После знаков '=' стоит пробел!
Теперь автоматический запуск новоиспеченной службы svnservice вам обеспечен. Чтобы удалить службу - выполните следующее
1 |
|
Теперь в консоли делаем:
1 |
|
или для Windows:
1 |
|
В результате в консоли увидим строку
1 |
|
Это правильно, ибо мы пока ничего не добавляли в репозиторий. Пора бы сделать это.
Скинем наши начальные наработки (допустим, файл main.cpp) в /home/kraplax/myProject (или C:\myProject). Перейдем в папку рабочей копии и добавим main.cpp в систему Subversion:
1 |
|
Собственно - все. Теперь любое изменение в файле main.cpp можно коммтить с помощью команды
1 |
|
Когда к проекту добавятся новые файлы их также добавляем с помощью svn add.
Но, при дальнейшем использовании Subversion вы вскоре освоитесь с ней, и, возможно, решите воспользоваться графическим интерфейсом в виде QSvn или TortoiseSVN.
Вот и все. Это не так сложно как кажется в самом начале =)
И SVN можно использовать не только для программирования, но и для верстки сайтов и кто еще знает для чего :D
Помните только, что использовать SVN для бинарных (нетекстовых) файлов гораздо менее удобно чем для текстовых.
Жду комментариев :)
Жаль, что так в кратце. Но статья понравилась. Полезно.
Буду пробывать. Получится - отпишусь.
Буду пробывать. Получится - отпишусь.
Не так уж и вкратце. Напиши чего в ней не хватает и возможно напишу подробнее в другой статье.
Не хватает:
- скрещивание с апачем (web_dav)
- редактирование свойств файла (svn propset) (на основе этих свойств можно сделать файл исполняемым или в скрипт автоматом прописывать дату последней модификации и номер ревизии - к примеру)
- умение пользоваться патчами, применять их и создавать самостоятельно
- в целом было бы неплохо объяснить новичкам все команды и рассказать как решать конфликты.
- копировать метки и мержить
- рассказать про негласное соглашение о наименовании трёх корневых каталогов trank, branches, tags
- ..
Вообщем тут поле непаханное, и пожалуйста. Будете писать про свн, пишите команды в консоли - это правильнее. Гуи люди освоят позже, когда поймут как пользоваться svn.
- скрещивание с апачем (web_dav)
- редактирование свойств файла (svn propset) (на основе этих свойств можно сделать файл исполняемым или в скрипт автоматом прописывать дату последней модификации и номер ревизии - к примеру)
- умение пользоваться патчами, применять их и создавать самостоятельно
- в целом было бы неплохо объяснить новичкам все команды и рассказать как решать конфликты.
- копировать метки и мержить
- рассказать про негласное соглашение о наименовании трёх корневых каталогов trank, branches, tags
- ..
Вообщем тут поле непаханное, и пожалуйста. Будете писать про свн, пишите команды в консоли - это правильнее. Гуи люди освоят позже, когда поймут как пользоваться svn.
Кстати, вот очень толковая статья, которая мне когда-то помогла разобраться со многими мутными моментами.
http://wiki.linuxformat.ru/index.php/LXF70:Subversion2
http://wiki.linuxformat.ru/index.php/LXF70:Subversion2
Большая. Не осилил бы. особенно в случае если бы мне для чистого интереса понадобилось бы локально сделать сервер SVN, то я вряд ли бы стал читать ее. А вот то что я написал - самое оно. Хотя, надо признать, такая книга полезна. Я например понятия не имею зачем нужны большинство комманд в SVN. Поэтому забукмаркаю-ка я её =)
добрый день) спасибо за такое подробное описание! у меня стоит ubuntu 9.04, я делаю все в точности,как описано выше,но у меня не получается запустить: svnserve --daemon --root /home/trali/svn/test
Комп сразу виснет... в чем может быть причина?
Комп сразу виснет... в чем может быть причина?
Статья довольно хорошо отражает самую необходимую информацию по установке и настройке svn. Здесь не описан пример, для варианта apache + mod dav_svn. Вот здесь об этом более подробнее написано - http://devdream.net/?p=265, и тоже простым языком. Кстати, для настройки svn сервера я тоже пользуюсь svnserve, и довольно часто приходиться настраивать гибко права доступа к различным папкам. Особенно, когда много пользователей репозитория, например, дизайнеры, программисты, копирайтеры. Хорошо эта тема освещается здесь: http://devdream.net/?p=286
ЗЫ в сусе ммм что-то типа sudo zypper install subversion