Subversion (SVN) — свободная централизованная система управления версиями. Необходимый инструмент программиста.
Статья о Subversion в Википедии.
Веб-сайт проекта: http://subversion.apache.org/
Подготовка к установке
- Предварительно необходимо установить Apache (отдельно или в составе Zend Server).
- Скачать последнюю версию Subversion для Windows: http://sourceforge.net/projects/win32svn/files/latest/ (на момент написания статьи — версия 1.7.6)
Установка
- Запускаем установщик. Здесь все очень просто и прямолинейно. Единственное значимое действие — выбор пути установки. В моем случае это c:\Program Files (x86)\Subversion\.
- Добавляем папку c:\Program Files (x86)\Subversion\bin в SYSTEM PATH.
Открываем Пуск -> Компьютер -> Свойства -> Дополнительные параметры системы ->вкладка Дополнительно -> Кнопка Переменные среды.
В разделе «Системные переменные» находим переменную Path и нажимаем кнопку Изменить. В конец строки дописываем путь к папке bin. Разделитель путей — точка с запятой «;».
Кстати, установщик справился с этим заданием сам, так что мне осталось только проконтролировать :) - Из папки c:\Program Files (x86)\Subversion\bin копируем файлы mod_dav_svn.so и mod_authz_svn.so в папку c:\Program Files (x86)\Zend\Apache2\modules, здесь c:\Program Files (x86)\Zend\Apache2 — папка установки Apache.
- Далее переходим в папку c:\Program Files (x86)\Zend\Apache2\conf и открываем файл httpd.conf. Находим в нем строки:
#LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module modules/mod_dav.so
и активируем их, т.е. убираем решетку (#) в начале обоих строк.
- Там же добавляем две новые строки:
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
- В самый конец файла дописываем директиву:
Include "conf/svn.conf"
- Сохраняем httpd.conf.
- Теперь необходимо создать папку, в которой будет храниться база данных репозитория. Например E:\_SVN. Создаем ее как обычно через Проводник или любой другой файловый менеджер.
- Создаем репозиторий. В командной строке выполняем:
svnadmin create E:\_SVN
- Возвращаемся в папку c:\Program Files (x86)\Zend\Apache2\conf . Создаем в ней новый файл svn.conf (в п.6 мы уже подключили его к httpd.conf) со следующим содержанием:
<Location /svn> DAV svn SVNPath E:/_SVN </Location>
В SVNPath указывается путь к папке репозитория.
- Чтобы изменения вступили в силу, перезапускаем службу Apache.
- Проверяем, что получилось.
Для этого открываем браузер и вводим в адресную строку: http://localhost/svn/
Если все правильно, вы должны увидеть надпись:
svn — Revision 0: /
Выбор структуры.
На этом этапе вы должны решить какой будет структура вашего репозитория. Будет ли в нем хранится несколько проектов или только один. У обоих подходов есть свои плюсы и минусы (подробнее здесь (анг.)). Многопроектный репозиторий легче администрировать, и при этом вы всегда сможете создать отдельный репозиторий для какого-нибудь большого проекта. Лично я предпочитаю хранить проекты в одном репозитории, белее-менее крупная софтверная компания выберет, скорее всего, смешанный вариант.
Чем отличается многопректный вариант от однопроектного? Только структурой папок.
Структура многопроектного репозитория:
/ project1/ trunk/ tags/ branches/ project2 trunk/ tags/ branches/ project3 trunk/ tags/ branches/
Структура однопроектного репозитория:
/ trunk/ tags/ branches/
Подробнее о назначении системных папок:
- trunk — папка для хранения кода текущего релиза (последняя стабильная версия проекта). Не должна содержать ничего лишнего!
- tags — папка для хранения версий. Содержит подпапки по номерам версий. Выкладывая новый релиз в trunk всегда делаем копию в tags!
- branches — папка для работы над новым или экспериментальным кодом (чтобы не затронуть код текущего релиза).
Создаем проект
Вновь открываем командную строку, и выполняем:
svn mkdir -m "Новый проект" http://localhost/svn/project1
Создаем системные папки:
svn mkdir -m "" http://localhost/svn/project1/trunk svn mkdir -m "" http://localhost/svn/project1/tags svn mkdir -m "" http://localhost/svn/project1/branches
Проверяем результат из командной строки:
svn list http://localhost/svn/project1
Или открываем в браузере http://localhost/svn/project1
В обоих случаях вы должны увидеть созданную структуру папок.
Настройка прав доступа
- Первый шаг — создание пользователей.
Открываем командную строку, переходим в папку установки Apache и далее в папку bin:cd "c:\program files (x86)\Zend\Apache2\bin"
В зависимости от типа аутентификации используются разные команды (для Simple — htpasswd, для Digest — htdigest).
Создаем первого пользователя:htdigest -с "e:\_SVN\auth" SVN Max
Параметр -с используется для создания файла e:\_SVN\auth.
Следующих пользователей создаем без параметра -с (иначе файл будет перезаписан и мы потеряем всю введенную ранее информацию):
htdigest "e:\_SVN\auth" SVN Max
e:\_SVN\auth — это путь к файлу, в котором будет храниться информация о пользователях. Расположение файла может быть любым, но чтобы не запутаться размещаю его в папку репозитория.
SVN — область (realm) или группа к которой принадлежит имя пользователя. Значение этого параметра запоминаем, т.к. оно еще понадобится.
Max — имя пользователя.После ввода команды, необходимо ввести пароль пользователя, затем повторно подтвердить его.
- Удаление пользователя.
В отличие от htpasswd, htdigest не может удалять пользователя. Поэтому единственный выход — ручное редактирование файла. - Теперь переходим к настройке прав доступа.
В папке репозитория (e:\_SVN) создаем еще один файл — acl с примерно таким содержанием (используем Блокнот):# # Группы пользователей # [groups] team1 = Max, Sergey # # Доступ к корню # team1 - чтение и запись # все остальные - только чтение # [/] @team1 = rw * = r # # Доступ к project1 # team1 - чтение и запись # Ivan - чтение и запись (у него доступ только к этому проекту) # Dub - доступ запрещен # [/project1] @team1 = rw Ivan = rw Dub =
- Вносим изменения в svn.conf:
<Location /svn> DAV svn SVNPath e:/_SVN AuthName "SVN" AuthType Digest AuthUserFile e:/_SVN/auth AuthzSVNAccessFile e:/_SVN/acl # Authorization: Authenticated users only Require valid-user </Location>
Обратите внимание на параметр AuthName, его значение должно совпадать с параметром realm, введенном при создании пользователя.
- Чтобы изменения вступили в силу перезагружаем службу Apache.
- Проверяем результат. Теперь при открытии репозитория должны запрашиваться имя пользователя и пароль.
Работать с Subversion из командной строки — страшный анахронизм. В следующей статье я покажу как установить и использовать клиент Subversion в популярной среде разработки Eclipse.
19 ответов к “Установка Subversion (SVN) на Windows”
В следующей статье я покажу как установить и использовать клиент Subversion в популярной среде разработки Eclipse.
Следующей статьи, по-видимому, не будет=)
Точняк )
Большое спасибо Вам за ответ. В моем случае понадобилось копирование intl3_svn.dll and libdb44.dll :
c:\svn\bin to C:\wamp\bin\apache\Apache2.2.11\bin.
Это я узнала из http://www.reloadedpc.com/other/setup-wamp-svn-subversion-windows/
С ув. Виктория
Здравствуйте. У меня та же проблема, что и у Виталия, Apache-2.2.11. Обновить до версии 2,4 не могу, т.к. потом не запускается Wamp.exe
C Apache 2.2 должно работать.
У Виталия была версия 2.0
Смотрели error.log (Apache2/logs)? Есть там подробное описание ошибки?
Добавил пользователей и права доступа для них как описано здесь. При переходе по localhost/svn/project1 запрашивается логин и пароль. Ввожу логин и пасс как в файлах — дальше не пускает (снова появляется окно ввода логина и пароля).
Попробуйте в настройке прав доступа удалить все лишнее и дать всем пользователям полные права:
Так же сделал, все равно не помогает. Окно авторизации продолжает «висеть» и не пускает. svn.conf проверил строчку за строчкой. acl также исправил на «[/]» и второй строкой «* = rw»
Можете скинуть куда-нть ваши конфигурационные файлы?
Нужны все 3: svn.conf, auth и acl
http://webfile.ru/6345223 залил
В файлах вроде все правильно.
Попробуйте дописать в svn.conf перед AuthUserFile две строки:
Теперь апач не запускается (The requested operation has failed!), и даже лог файл error не создает
Тогда откатываем назад.
А какой Apache? 2.2?
да, сначала 2.0 был. потом я прочел проблему как у виталия была. переустанавливал. окей все заново попробую, на «чистую»
Все получилось… Спасибо большое за статью… :-)
установил Apache на windows XP, прикрутил к нему PHP (вобщем сделал все как по мануалу). При добавлении в httpd.conf следующих строчек
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
Apache перестает запускаться, выдавая ошибку «The requested operation has failed!». Не подскажите как решить данную проблему?
А эти строки не забыли раскоментировать:
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_module modules/mod_dav.so
?
И посмотрите error.log (Apache2/logs).
Там должна быть более полная информация об ошибке.
эти строки тоже раскомментировал. А в error.log он по этому поводу ничего не пишет. Apache версии 2.0.64.
Ясно. Проблема в Apache.
SVN с версии 1.7.6 поставляется с модулями для Apache 2.2 и 2.4
Лучше обновить Apache до 2.2