Disclaimer: Прошу относиться с пониманием к тому, что данный текст пишется "на коленке" и разумеется не может рассматриваться как полноценное описание. Цель описания — только создать и настроить простейший репозиторий и начать работу с системой svn.
1. Использованное программное обеспечение:
-----
Apache 2.0.44
(apache_2.0.44-win32-x86-no_ssl.msi, 5 000 704 bytes)
(Текущая версия 2.0.45, но я использовал 0.44, поэтому так и описываю. Отличий в настройке нет.)
Subversion
(svn-0.20.0-setup.exe, 3 806 357 bytes)
Для заметки: Зачем нужен Apache?
Доступ к репозиторию Subversion возможен несколькими способами — локально, с использованием собственного протокола и standalone сервера, а также с использованием Apache и WebDAV. Последний способ, имхо, является предпочтительным — настройка доступа осуществляется средствами Apache и соответсвенно очень конфигурабельна, протокол http работает везде где только можно, надёжность Apache в общем-то доказана временем. Кроме того, хотя это уже и не так важно для нашего дела, система Subversion построена на APR (Apache Portable Runtime) и портируется на все платформы, на которых работает Апач. Ну, а с использованием локальных файлов вообще, ИМХО, лишена смысла
2. Установка продуктов
-----
Используя стандартные процедуры установки, устанавливаем Subversion и Apache.
Примем для простоты, что конечные директории установки, соответственно, C:\Program Files\Subversion\ и C:\Program Files\Apache Group\Apache2\ (директории по умолчанию).
Необходимо убедиться, что переменная PATH содержит путь к C:\Program Files\Subversion\ . Как это делается в Win9x, я уже не помню. По-моему, надо перегружаться — хотя не догма. Это необходимо для использования утилит svn и svnadmin из командной строки.
Всё, базова установка совершена. Далее мы будем настраивать Apache, репозиторий и сеть.
3. Конфигурация сети.
-----
Имя хоста для Subversion. Для простоты примем, что мы настраиваем хост svn.rsdn.ru
Разумеется, каждый системный администратор должен будет использовать при установке и настройке имя другого хоста и правильно настроить DNS, если предполагается коллективная работа. Для простоты опять же, этот вариант мы рассматривать не будем и просто напишем в файл hosts (местоположение на WinNT/2000/XP — %SystemRoot%\System32\drivers\etc\hosts) следующую строчку:
# 38.25.63.10 x.acme.com
# x client host
127.0.0.1 localhost
127.0.0.1 svn.rsdn.ru
Теперь обращение к svn.rsdn.ru с Вашей машины будет перенаправляться на 127.0.0.1, где и стоит Apache. Для начала работы с системой достаточно. Впоследствии Вы настроите правильные IP-адреса.
4. Настройка Apache
-----
Настройка Apache осуществляется с использованием настроечного файла httpd.conf в каталоге C:\Program Files\Apache Group\Apache2\conf\ .
Настройка апача — дело тонкое и многогранное, на httpd.apache.org лежит исчерпывающая документация на эту тему, и мы касаться её не будем. Для нашей задачи понадобится не так много настроек.
Оговорим только ещё одну вещч. Apache допускает, как полноценный веб-сервер, обслуживание множества виртуальных хостов. Для простоты описания примем, что данный Apache обслуживать будет только Subversion. Тот, что использует VHOSTS — знает что делать с файлами настройки в своём случае.
Итак. Имеем стандартный файл httpd.conf. Вносим в него следующие изменения:
— Устанавливаем переменную ServerName:
ServerName svn.rsdn.ru:80
— Разрешаем использование модуля mod_dav:
#LoadModule dav_module modules/mod_dav.so
меняем на
LoadModule dav_module modules/mod_dav.so
— Разрешаем использование модуля Subversion:
Добавляем строку
LoadModule dav_svn_module modules/mod_dav_svn.so
ПОСЛЕ строки с mod_dav.so.
— Настраиваем параметры доступа к репозиторию
Добавляем
в конец файла httpd.conf следующие строки:
<Location /svn>
DAV svn
SVNPath "C:/repository"
</Location>
Здесь предполагается, что физически репозиторий будет находиться в каталоге "C:\Repository". Доступ к корню репозитория будет осуществляться по адресу
http://svn.rsdn.ru/svn/
Обратите внимание на использование прямых слэшей вместо обратных в настройках Apache.
Также нужно скопировать файл mod_dav_svn.so из поставки Subversion в каталог C:\Program Files\Apache Group\Apache2\modules\ и файл libdb40.dll из поставки Subversion — в каталог "C:\Program Files\Apache Group\Apache2\bin\" .
Это собственно модуль системы Subversion и библиотека доступа к репозиторию, используемая модулем. В принципе, libdb40.dll может наверное находиться не в bin\, а в любой директории, описанной в переменной PATH.
Перезапустим сервис Apache.
5. Настройка Subversion, создание репозитория.
-----
В состав системы Subversion входят две основные консольные утилиты — svn.exe и svnadmin.exe. Первая утилита — собственно клиент, используемый нами в работе. svnadmin — утилита для обслуживания репозитория — создания, создания резервных копий и т.д.
Запустим консоль (cmd.exe). Подадим команду:
svnadmin create "C:\repository"
Если нет сообщений об ошибках — значит наш репозиторий создан!
В англоязычной документации команда "svnadmin create ..." описана как "svn create ....". "Не верь глазам своим".. очепятка. Уже описана в списке багов.
-----
Собственно, на этом этапе система готова к работе. Это не значит, что работа завершена — нужно назначить в случае необходимости разные права доступа для разных пользователей, возможно доступ посредством ssh — но эти вопросы больше относятся к конфигурации Apache и здесь их рассматривать ни к чему.
Главное — система на этоп этапе
готова к началу работы.
Описывать собственно работу с системой я не буду — в последнем номере журнала RSDN за 2002 год есть хорошая статья о работе с CVS. Последовательность импорта начального проекта, синхронизации — аналогична и для svn.
Надо однако учитывать, что идеология-то общая, а реализация у cvs и svn разная. Посему за деталями, пока я книжку не перевёл, отсылаю к англоязычному
оригиналу, а здесь просто приведу некоторые первые команды:
svn mkdir -m "Directory for my test project" http://svn.rsdn.ru/svn/testproject
— создаём тестовую директорию testproject в репозитории для нашего первого проекта. Обратите внимание на изменение номера Revision репозитория. В отличие от CVS, где все файлы имеют свою нумерацию — в svn любое изменение репозитория приводит к изменению
общего Revision number.
svn import -m "initial release" http://svn.shtrih-m.ru/svn/testproject .
— Включаем в репозиторий файлы из текущего каталога с подкаталогами (обратите внимание на точку в конце команды).
Выполнение команды
svn co http://svn.shtrih-m.ru/svn/testproject .
в пустой директории создаст рабочую копию проекта, полученную из репозитория, и на этом этапе можно начинать работу.
Если что не работает — спрашивайте.
Enjoy!