Недавно была мной мне поставлена задача установить и настроить такую систему контроля версий как Subversion. Оказалось что всё не так очевидно и сразу поднимаемо. Вот и решил сделать заметочку на память.
Итак есть машина под ALTLinux 5.1. На ней и будем экспериментировать.
Установка и настройка сервера.
Первым делом скачиваем и устанавливаем сам сервер subversion.
В линуксе это легко и просто сделать через утилиту synaptic или в консоли с помощью apt-get
apt-get install subversion-server-common subversion-server-standalone
эти пакеты я доставил, т.к. кое-какие уже были установлены с разными IDE.
Все репозитарии должны находиться в папке /var/lib/subversion или хотя бы линк туда кинуть надо.
У меня раздел для хранения файлов находится в home. Поэтому под рутом создаем каталог для всех репозитариев SVNa.
mkdir /home/svn
Создаём сам репозитарий с причудливым именем test02
svnadmin create /home/svn/test02
Эта комманда создаст всю структуру репозитария с базой, конфигами и прочей необходимой всячиной. Сделаем первое вливание. Како-нить файлик
Теперь настроим сам репозитарий. Для этого нам нужен каталог /home/svn/test02/conf. В нем содержаться 3 файла
svn import /var/www/apache2/html/ file:///home/cvsroot/ -m "initial import"
Теперь настроим сам репозитарий. Для этого нам нужен каталог /home/svn/test02/conf. В нем содержаться 3 файла
svnserve.conf - общие настройки репозитария
passwd - пользователи репозиратия
passwd - пользователи репозиратия
authz - тут назначение доступа к каталогам в самом репозитарии
ВНИМАНИЕ! Все параметры в этих файлах не должны начинаться с пробелов. А то когда я просто раскоментировал то, что мне нужно, оно не заработало - ругалось на стороне клиента, что в такой-то строке svnserve.conf нехватает чего-то.
svnserve.conf
Тут все настройки уже есть, их нужно только раскоментировать и по необходимости изменить. Нас интересует только секция general. В конце концов приведите ее к виду:
Тут все настройки уже есть, их нужно только раскоментировать и по необходимости изменить. Нас интересует только секция general. В конце концов приведите ее к виду:
[general]
# Запрещаем доступ анонимным пользователям
anon-access = none
#Авторизированным разрешаем запись
auth-access = write
auth-access = write
#Здесь указываем где хранится список пользователей и паролей. passwd - это имя файла
password-db = passwd
#Если вам нужно разделить доступ к каталогам внутри репозитария для пользователей, то нам нужна следующая опция. authz - это имя файла.
#Если вам нужно разделить доступ к каталогам внутри репозитария для пользователей, то нам нужна следующая опция. authz - это имя файла.
authz-db = authz
#Здесь задаем имя репозитария. Это и будет идентификатором репозитария.
realm = test02
#Здесь задаем имя репозитария. Это и будет идентификатором репозитария.
realm = test02
Не разкоментируйте authz-db = authz, если не собираетесь сразу менять назначать права на определённые каталоги разным пользователям в файле authz. А то получаеться указали читать права из файла authz, а в нем все ничего не назначено. Результат - Access denied для всех, даром, и пусть никто не уйдёт обиженным!
passwd
Тут определяем пользователей и пароли к ним. Пароли хранятся тут в открытом виде, но при грамотном администрировании это не проблема. Итак секция users.
[users]
boss = b0sP@ssw0rD
user01 = useR01P@ssw0rD
user02 = userR2P@ssw0rD
boss = b0sP@ssw0rD
user01 = useR01P@ssw0rD
user02 = userR2P@ssw0rD
authz
Если вам нужно разделить права доступа к разным каталогам внутри репозитария, то поправьте этот файл. Зачем это нужно? Ну например, есть группа программстов они имеют право писать в девелопмент ветку, а релиз имеют право только читать. В нее иммеет право вносить изменения только бос. Ну и может быть, если это комерческая разработка, то наверняка тут будет еще и чать репозитария, к исходникам которой, никто не должен иметь доступа, кроме боса. Ну вот примерно так.
[groups]
# В этой секции определяем группы пользователей
developers = user01,user02
admins = bos
[test02:/]
# В этой секции определяем группы пользователей
developers = user01,user02
admins = bos
[test02:/]
# Название этой секции означает корень репозитария test02.
# В ней мы указываем, что все пользователи имеют достутп на чтение в корне.
# Без этого у меня не давало доступа вообще ни к чему.
* = r
[test02:/branch]
* = r
[test02:/branch]
# На папочку branch даем доступ на чтение и запись разработчикам и админам.
@developers = rw
@admins = rw
[test02:/trunk]
@developers = rw
@admins = rw
[test02:/trunk]
# На папочку trunk даем доступ на чтение разработчикам на запись админам.
@developers = r
@admins = rw
[test02:/secret]
@developers = r
@admins = rw
[test02:/secret]
# На папочку secret даем доступ на чтение только user01, на запись только bos. А все остальные не имеют права просматривать эту папку.
bos = rw
user01 = r
* =
user01 = r
* =
Так как мы все эти действия делали от пользователя root, то и все правана папку /home/svn/test02 имеет только он. А репозитарий работает от пользователя subversion. Если вы ставили Subversion альтовый, то у вас уже есть этот пользоватетль. Просто установите его владельцем папки /home/svn и всего её содержимого и дать права чтение/записть только ему, а всем остальным убрать даже чтение.(Вспомните незашифрованные пароли в /home/svn/test02/conf/passwd)
chown -R subversion /home/svn
chmod u=rwX /home/svn
chmod oa-rwX /home/svn
chmod oa-rwX /home/svn
Теперь нужно запустить сервер subversion. В ALTLinux это делается простой коммандой
service svnserve start
И укажите ему стартовать при запуске системы
chkconfig svnserve on
Вроде всё. Если что забыл пишите.
Комментариев нет:
Отправить комментарий