How-to`s — Настройка SVN сервера и создание SVN репозитория
Намедни отключили меня за неуплату интернета. Ну, опомнился я только вечером, когда все уже закрыто, поэтому что еще делать когда ты оффлайн? Правильно, кодить =)
А для этого поставил перед собой такую задачу - создать свой сервер SVN и репозиторий для кода.
Внимание! Если вы не желаете читать то, как я добирался до этого сам - ныряйте вниз до следующего заголовка.
Пошарив в закромах я понял что у меня под рукой было следующее:
В Linux'е все еще скромнее - установлен пакет subversion. Все :/
Хм... поглядим что можно из этого сварить при условии что интернета нет и гуглить не получится.
Для начала как обычно посмотрел что там доступно под Linux, что при этом начиналось бы с svn. Заинтересовала утилита svnadmin. Когда я понял что особо толку от 'svnadmin help' не будет, то первым делом поглядел в ман. Разочаровался. Такого почти бесполезного мана я еще не видел :(
кстати, 'svnadmin help' дал мне достаточно информации по которой я даже, как позже выяснилось, смог сделать первый свой репозиторий:
Выглядело это более чем странно: папка 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.
В итоге команда
запустила нужный сервер и после этого с помощью TortoiseSVN с машины Windows я выбрал опцию Repo-browser и увидел все дерево нового репозитория - чистый лист =) Хорошо что в том же окне легко было просто добавить нужные файлы в репозиторий через правый клик.
Итак, попробую теперь без лирики описать вкратце что нужно сделать. Исходные данные:
Имя пользователя для доступа к репозиторию: kraplax
Пароль: example_password
Директория в которой будет храниться репозиторий: /home/kraplax/my-svn-dir для Linux и C:\my-svn-dir для Windows (папка может не существовать вообще, но должна быть обязательно пустой!).
Папка для рабочей копии с кодом: /home/kraplax/myProject или C:\myProject (папка может не существовать вообще, но должна быть обязательно пустой!)
Собственно - все. Теперь любое изменение в файле main.cpp можно коммтить с помощью команды
Когда к проекту добавятся новые файлы их также добавляем с помощью svn add.
Но, при дальнейшем использовании Subversion вы вскоре освоитесь с ней, и, возможно, решите воспользоваться графическим интерфейсом в виде QSvn или TortoiseSVN.
Вот и все. Это не так сложно как кажется в самом начале =)
И SVN можно использовать не только для программирования, но и для верстки сайтов и кто еще знает для чего :D
Помните только, что использовать 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
В Linux'е все еще скромнее - установлен пакет subversion. Все :/
Хм... поглядим что можно из этого сварить при условии что интернета нет и гуглить не получится.
Для начала как обычно посмотрел что там доступно под Linux, что при этом начиналось бы с svn. Заинтересовала утилита svnadmin. Когда я понял что особо толку от 'svnadmin help' не будет, то первым делом поглядел в ман. Разочаровался. Такого почти бесполезного мана я еще не видел :(
кстати, 'svnadmin help' дал мне достаточно информации по которой я даже, как позже выяснилось, смог сделать первый свой репозиторий:
svnadmin create /home/kraplax/my-svn-dir
Выглядело это более чем странно: папка 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.
В итоге команда
svnserve --daemon --root=/home/kraplax/my-svn-dir
запустила нужный сервер и после этого с помощью 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 это будет скорее всего так:
sudo apt-get install subversion
Для Mandriva это будет скорее всего так:
1
2
3
4
5su
<root password>
urpmi subversion
OpenSuse не пользовал, но, думаю логику вы уже уловили.
В Windows установите любой дистрибутив Subversion, например Slik subversion - он содержит необходимые нам svn, svnadmin и svnserve.
-
Далее команды даны так, как если бы папка установки Subversion была в вашей переменной PATH.
В консоли выполните следующее:
svnadmin create /home/kraplax/my-svn-dir
для Windows:
svnadmin create C:\my-svn-dir
- В вашем любимом редакторе откройте файл /home/kraplax/my-svn-dir/conf/svnserve.conf (для Windows - C:\my-svn-dir\conf\svnserve.conf) и раскомментируйте (удалите символ # в начале строки) следующие строки:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#для разрешения доступа на чтение без авторизации
anon-access = read
#для разрешения доступа на запись тем, кто авторизировался
auth-access = write
#для указания на файл паролей
password-db = passwd
#для указания на файл политик пользователей
authz-db = authz
-
Если в предыдущем шаге вы решили использовать файл паролей passwd - тогда открывайте его в любом редакторе (он лежит рядом с файлом svnserve.conf). Если файла нет - создайте его и добавьте новых пользователей по следующей схеме:
1
2
3
4
5
6
7
8
9
[users]
#пользовател = пароль
kraplax = example_password
-
Запускаем сервер Subversion:
1
2
3
4
5
svnserve --daemon --root /home/kraplax/my-svn-dir
в случае с Windows достаточно заменить путь к репозиторию. Однако, вы, возможно, захотите запускать сервер как сервис Windows. В таком случае вам нужно его зарегистрировать в системе:
1
2
3
4
5
6
7
sc create svnservice binPath= "svnserve.exe --service
--root C:\my-svn-dir" displayname= "Subversion service" depend= tcpip start= auto
Будьте внимательны! После знаков '=' стоит пробел!
Теперь автоматический запуск новоиспеченной службы svnservice вам обеспечен. Чтобы удалить службу - выполните следующее
1
2
3
4
5
sc delete svnservice
-
Теперь в консоли делаем:
1
2
3
4
5
svn co svn://kraplax@localhost/ /home/kraplax/myProject
или для Windows:
1
2
3
4
5
svn co svn://kraplax@localhost/ C:\myProject
В результате в консоли увидим строку
Checked out revision 0.
Это правильно, ибо мы пока ничего не добавляли в репозиторий. Пора бы сделать это.
-
Скинем наши начальные наработки (допустим, файл main.cpp) в /home/kraplax/myProject (или C:\myProject). Перейдем в папку рабочей копии и добавим main.cpp в систему Subversion:
1
2
3
4
5
svn add main.cpp
Собственно - все. Теперь любое изменение в файле main.cpp можно коммтить с помощью команды
svn commit -m "Текст сообщения для коммит-логов"
Когда к проекту добавятся новые файлы их также добавляем с помощью svn add.
Но, при дальнейшем использовании Subversion вы вскоре освоитесь с ней, и, возможно, решите воспользоваться графическим интерфейсом в виде QSvn или TortoiseSVN.
Вот и все. Это не так сложно как кажется в самом начале =)
И SVN можно использовать не только для программирования, но и для верстки сайтов и кто еще знает для чего :D
Помните только, что использовать SVN для бинарных (нетекстовых) файлов гораздо менее удобно чем для текстовых.
Жду комментариев :)