У нас в сайте уже имеется статья о настройке сервера Subversion под Windows на основе продукции CollabNet, однако они прекратили поддержку этого замечательного продукта и теперь предлагают убогий аналог (Subversion Edge), написанный на Java, работающий нестабильно и часто вызывающий различные сбои, поэтому в данном HOWTO мы подробно рассмотрим установку простого и быстрого svn-сервера под Windows на основе SlikSVN.
SlikSVN содержит в комплекте только svnserve, поэтому если Вам нужен Apache, придётся использовать CollabNet Subversion Edge, либо собирать комплект вручную.
Шаг 1. Установка сервера
Установка достаточно проста и не должна вызвать затруднений. Просто загрузите версию для своей платформы с официального сайта и установите штатными средствами. Запомните путь, в который установили сервер, он нам понадобится в дальнейшем.
Сразу после установки Вы должны прописать каталог сервера в системную переменную %PATH%, иначе возможны проблемы при запуске и работе сервера. Для этого перейдите в Панель управления – Система (либо нажмите правой кнопкой по значку Мой компьютер и выберите пункт Свойства) – страница Дополнительно – кнопка Переменные среды. В открывшемся окне в системных переменных найдите Path, выделите её и нажмите Изменить, поставьте точку с запятой и укажите путь к установленному серверу.
Например в строке было прописано:
%SystemRoot%\system32;%SystemRoot%
После Ваших правок должно получиться так:
%SystemRoot%\system32;%SystemRoot%;C:\Program Files\SlikSvn\bin
Здесь C:\Program Files\SlikSvn\ – путь к установленному SlikSVN.
Внимание! После последнего пути точка с запятой не ставится.
Шаг 2. Установка клиента
В качестве SVN-клиента мы будем использовать TortoiseSVN, подробнее о котором можно почитать в HOWTO.
Скачать программу можно на её официальном сайте программы на странице Downloads. Там же можно скачать пакет локализации, содержащий помимо перевода интерфейса программы, ещё и словарь проверки орфографии (применяется при коммите изменений).
Установка программы стандартна и не должна вызвать никаких сложностей.
Шаг 3. Установка службы svnserve
SlikSVN по умолчанию не устанавливает сервер svnserve как системную службу Windows, поэтому придётся выполнить это действие вручную.
Рекомендуем создать в любой папке cmd-файл для быстрой установки.
Если у Вас Windows XP, используйте следующий файл:
@echo off
sc create svnserve binpath= "\"C:\Program Files\SlikSvn\bin\svnserve.exe\" --service --root c:\svn_repository" displayname= "Subversion" depend= tcpip start= auto
sc description svnserve "Сервер Subversion (svnserve)"
Здесь первая команда создаёт службу Windows, а вторая задаёт ей описание. Созданный cmd-файл нужно запускать с правами администратора.
Если у Вас Windows Vista/7, то используйте такой файл:
@echo off
sc create svnserve binpath= "\"C:\Program Files\SlikSvn\bin\svnserve.exe\" --service --root c:\svn_repository --listen-host 0.0.0.0" displayname= "Subversion" depend= tcpip start= auto
sc description svnserve "Сервер Subversion (svnserve)"
Отличие лишь в добавленном параметре –listen-host 0.0.0.0, при отсутствии которого на Windows Vista/7 сервер слушает только IPv6, а не IPv4.
В обоих скриптах C:\Program Files\SlikSvn\ – путь установки сервера, а c:\svn_repository – путь, в котором будут храниться репозитории сервером. Все пути с пробелами должны быть указаны в кавычках, а кавычки экранированы.
Если в ответ на обе команды Вы получили Success, значит служба сервера была успешно создана, настроена и включена для автоматического запуска.
Шаг 4. Настройка svnserve
Настройку начнём с того, что создадим новый репозиторий со стандартными настройками, которые и будем редактировать. Для этого зайдём в Проводнике Windows в каталог, который Вы указали в скрипте установки службы для хранилища репозиториев (стандартное значение - С:\svn_repository), нажмём правой кнопкой по пустому месту в нём (если каталог ещё не существует, его нужно создать) и выберем “TortoiseSVN” – “Create repository here”. Через несколько мгновений внутри каталога появятся файлы и подкаталоги, а также будет выведено сообщение об успешном создании репозитория. В дальнейшем путь к репозиторию я буду заменять на ПУТЬ_К_РЕПОЗИТОРИЮ.
Теперь мы должны создать пользователей, которые будут работать с репозиторием. Для этого мы должны открыть файл " ПУТЬ_К_РЕПОЗИТОРИЮ\conf\svnserve.conf" в любом текстовом редакторе, например Блокноте Windows или Notepad++. Здесь Вы должны раскомментировать (убрать перед строкой символ(ы) “#”) следующие строки:
anon-access = none
auth-access = write
Строка “anon-access = none” означает, что анонимы не смогут получить доступ к репозиторию вообще (сделано из соображений безопасности), а “auth-access = write” означает, что авторизованные пользователи получат полный доступ в пределах их ограничений, заданных в файле authz (если такая функция включена). Если Вы хотите, чтобы анонимы могли получить доступ только для чтения (например, разрабатываете OpenSource-проект), то установите “anon-access = read”.
Теперь Вы должны раскомментировать строку:
password-db = passwd
Эта строка указывает в каком файле будут находиться логины и пароли пользователей для авторизации на svn-сервере. Теперь откройте файл " ПУТЬ_К_РЕПОЗИТОРИЮ\conf\passwd" в любом текстовом редакторе и впишите в нём “логин_пользователя = пароль_пользователя” (разделителем служит знак равенства). Пример правильного файла passwd:
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
# harry = harryssecret
# sally = sallyssecret
vova = kjkj345K
anton = Gh74oJId
dima = ir9895498
katya = o894584578
sergey = 985kdfjdfk
Убираем символ комментария из строки:
realm = My First Repository
В ней указывается имя Вашего репозитория. После знака равенства вместо My First Repository Вы можете указать любое другое имя. Оно выводится при запросе логина и пароля.
Настройка сервера с простой (simple) авторизацией завершена. Пример правильного файла конфигурации сервера:
### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)
### Visit http://subversion.tigris.org/ for more information.
[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = none
auth-access = write
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the directory containing
### this configuration file.
### If SASL is enabled (see below), this file will NOT be used.
### Uncomment the line below to use the default password file.
password-db = passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control. Unless you specify a path
### starting with a /, the file's location is relative to the the
### directory containing this file. If you don't specify an
### authz-db, no path-based access control is done.
### Uncomment the line below to use the default authorization file.
#authz-db = authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa. The default realm
### is repository's uuid.
realm = Test Repository
[sasl]
### This option specifies whether you want to use the Cyrus SASL
### library for authentication. Default is false.
### This section will be ignored if svnserve is not built with Cyrus
### SASL support; to check, run 'svnserve --version' and look for a line
### reading 'Cyrus SASL authentication is available.'
# use-sasl = true
### These options specify the desired strength of the security layer
### that you want SASL to provide. 0 means no encryption, 1 means
### integrity-checking only, values larger than 1 are correlated
### to the effective key length for encryption (e.g. 128 means 128-bit
### encryption). The values below are the defaults.
# min-encryption = 0
# max-encryption = 256
Теперь пора проверить созданный нами svn-сервер, но сначала мы должны перезапустить его чтобы он смог считать изменённые конфигурационные файлы. Для этого набираем “Windows+R” – “cmd.exe”. В открывшейся командной строке пишем слелующие команды (по порядку):
net stop svnserve
net start svnserve
Открываем TortoiseSVN Repository Browser из контекстного меню любой папки и в качестве URL вводим: svn://127.0.0.1/. Сервер запросит указать логин и пароль, заданные в файле passwd и при успешной авторизации отобразит корневой каталог. Сервер успешно настроен и готов к управлению проектами.