Saturday, August 9, 2008

Subversion for WindowsXP (without Apache)

Что имеется:
1. Subversion 1.4.6
2. Loner XP 05.2008
3. NetBeans6.1

Установка и настройка.

1. Устанавливаем Subversion C:\Subversion

2. Создаем папку для хранилища C:\Repo

3. Регистрируем службу svn (есть в документации к Subversion)
sc create svn
binpath= “c:\subversion\bin\svnserve.exe ––service -r c:\repo”
displayname= “Subversion Repository”
depend= Tcpip

4. Запускаем сервис
net start svn

5. Создадим проект для рассмотрения настроек сервиса
svnadmin create с:/repo/testproj

6. Рассмотрим директивы в файле в c:\repo\testproj\conf\svnserve.conf
anon-access = none
auth-access = write
Задаются правила для авторизованных и анонимных пользовалей
none - ничего недьзя делать с проектом
read - можно читать проект
write - можно читать и писать в проект

*anon-access, auth-access и authz-db не перекрывают друг друга

password-db
указывает путь к файлу (абсолютный или относительный (относительно текущего каталога conf)) хранящему список пользователей и паролей. Если у вас для нескольких проектов этот файл имеет одно и то же значение, то можно положить его выше папок проектов и соответственно указать путь.

7. Структура файла с паролями
[users]
vasya = vasinpassword
petya = taT2d@1%
Тут все ясно, храняться пользователи и пароли.

authz-db - указывает на файл определяющий группы пользователей и уточняющий права доступа к конкретным папкам проекта

Последняя директива - realm - содержит имя проекта, которое должно быть уникальным. В принципе, можно его и не задавать.

8. Файл из директивы authz-db.
Опциями являются имена пользователей (описанных в password-db), а значениями - r (только чтение), rw (чтениеи и запись) и пустой строкой (ничего не разрешено). Если пользователь не упомянут в секции, считается, что доступ запрещен. Пример конфига:
[testproject:/some/directory]
vasya = rw
petya = r
Пользователь vasya имеет полный доступ к каталогу /some/directory, а petya - только на чтение. Чуть ниже можно дописать так:
[testproject:/some/directory/inside]
petya = rw
И petya получит доступ на запись в подкаталог inside каталога directory
По-умолчанию, к репозиторию доступ не имеет вообще никто. Чтобы разрешить пользователям хотя бы читать его содержимое, надо написать так:
[/]
* = r

Еще в файле можно определять группы. Они описываются в секции [groups]. В описании группы имя опции - имя группы, а значение - список пользователей в нее входящих через запятую. Группы могут включать в себя другие группы. Имя группы отличается от имени пользователя по знаку @ перед ее именем. Например:
[groups]
web-designers = petrov, ivanov
programmers = sidorov, vasilchenko
everyone = @web-designers, @programmers
Права группам выдаются так же, как и пользователям:
[testproject:/somewhere/something]
@programmers = rw
@web-designers = r
[testproject:/somewhere/elsewhere]
@web-designers = rw
sidorov = rw

9. А подключиться можно как по локальной машине, так и по ip
svn://localhost/testproject


Отдельное спасибо блогу http://vingrad.ru/blogs/Alix/2008/05/27/ustanovka-i-nastroyka-subversion-pod-windows/
и мануалам ;-)