Intro.
Возникла такая ситуация, при которой мне и еще одному программисту пришлось вести работу над одним и тем же проектом. Я уже давно пользуюсь Джентельменским набором, и мне нравится его портабельность и маленький размер.Немного покрутив модулями, все стало понятно. Я изложу свою версию, которая, возможно, поможет кому то сократить и время и ресурсы.
Что нужно?
Denwer.
www.denwer.ru
SVN (Tigris)
subversion.tigris.org
svn-win32-1.x.x.zip
Устанавливаем, настраиваем
- Устанавливаем Денвер (Для тех, у кого он установлен, данный пункт смело опускается).
Будем считать, что папка, в которую был установлен денвер будет в дальнейшем именоваться, как [Папка Денвера] - Создаем в папку для бинарников SVN (я считаю, что будет лучше, если она будет храниться со всем скарбом джентльменского набора).
Пусть это будет [Папка Денвера]\usr\local\svn.
Распаковываем содержимое архива svn-win32-1.x.x.zip в созданную папку. - Копируем из папки [Папка Денвера]\usr\local\svn\bin файлы mod_dav_svn.so, mod_authz_svn.so в папку модулей Apache ([Папка Денвера]\usr\local\apache\modules) и файлы intl3_svn.dll, libdb44.dll в папку к бинарникам Apache ([Папка Денвера]\usr\local\apache\bin)
- Создаем еще одну папку для нашего будущего репозитория.
Пусть это будет [Папка Денвера]\repository. - Добавляем требуемые переменные среды.
PATH=%PATH%; [Папка Денвера]\usr\local\svn\bin
APR_ICONV_PATH= [Папка Денвера]\usr\local\svn\iconv - Создаем репозиторий. В командной строке в папке [Папка Денвера]\repository выполняем следующую команду:
>svnadmin create [Имя репозитория]
Можно создать таким образом несколько различных проектов. - Настраиваем репозиторий для работы в несколько рук или иных конечностей.
- Создаем пользователей репозитория.
htpasswd.exe -cm [Папка Денвера]\usr\local\svn\svn-auth [имя пользователя]
htpasswd.exe -m [Папка Денвера]\usr\local\svn\svn-auth [еще одно имя пользователя]
…
- Настраиваем права доступа.
Создаем файлик [Папка Денвера]\usr\local\svn\svn-acl
Будем считать, что у нас созданы пользователи (п. 7.1.) user1, user2, user3, user4 и проекты project1 и project2. Первые 2 пользователя работают в команде над первым, закрытым проектом, остальные — над открытым для просмотра вторым проектом.
#---- svn-acl ----
#Группы доступа.
[groups]
team1 = user1, user2
team2 = user3, user4
# доступ только для первой группы – RW (чтение, запись)
[project1:/]
@team1 = rw
#доступ для второй группы – RW (чтение, запись) и для всех остальных – R (чтение)
[project2:/]
@team2 = rw
*=r
#-------- - Создаем файл конфигурации для APACHE2
[Папка Денвера]\usr\local\svn\subversion.conf
#---- subversion.conf ----
# модули для работы SVN
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
# Наш репозиторий одного из проектов будет располагаться по адресу
# localhost/svn1, второй - localhost/svn2.
# Для удаленных хостов данные репозитории будут доступны по IP адресу хоста,
# на которой запущен #denwer (http://192.168.0.1/svn1)
#
<Location /svn1>
DAV svn
SVNListParentPath on
SVNPath [Папка Денвера]/svn/project1
AuthType Basic
AuthName "Subversion repository"
AuthUserFile [Папка Денвера]/usr/local/svn/svn-auth
Require valid-user
AuthzSVNAccessFile [Папка Денвера] /usr/local/svn/svn-acl
<Location /svn2>
DAV svn
SVNListParentPath on
SVNPath [Папка Денвера]/svn/project2
AuthType Basic
AuthName «Subversion repository»
AuthUserFile [Папка Денвера]/usr/local/svn/svn-auth
Require valid-user
AuthzSVNAccessFile [Папка Денвера] /usr/local/svn/svn-acl
- Создаем пользователей репозитория.
Добавляем конфигурацию в Apache, в конце файла httpd.conf дописываем строчку:
Include ../../svn/subversion.conf
Запускаем денвер и пробуем зайти по адресу localhost/svn1
Вуа-ля!