Устанавливаем svnserve вручную под Windows на основе SlikSVN

У нас в сайте уже имеется статья о настройке сервера 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: http://tortoisesvn.net/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 и при успешной авторизации отобразит корневой каталог. Сервер успешно настроен и готов к управлению проектами.

10 commentaries to post

  1. Добрый день.
    У нас Windows server 8 R2.
    Не получается создать сервис svnserve с помощью cmd файла.
    Пытался и с командами для XP и 7? Не подскажете в чем может быть причина?

  2. При попытке запустить svn://127.0.0.1/ пишет
    Unble to connect to a repository at URL ‘ svn://127.0.0.1/
    Error while parsing config file: C:\svn_repository\conf\svnserve.conf:
    line 19: Option expected
    Пытался закомментить строку, кидает туже ошибку, только на строке 20..
    Стоит коментировать все строки кторые по мануалы мы раскомментировали?

  3. Справился сам, ответ на вопрос где спрашивал нужно ли коментить все строки оказался очевидным — ДА!

  4. У меня в ответ на
    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] CreateService FAILED 1073:
    The specified service already exists.

  5. Наталия :

    The specified service already exists.

    Служба с таким именем уже установлена. Можете удалить её через sc delete svnserve, затем создать той же командой.

  6. Спасибо, все работает по вашей инструкции. Использую ручную сборку Апача + php

  7. Инструкция устарела. В папке bin нет файла svnserve exe

    1. Статья до сих пор актуальна. Разработчики сделали модуль SvnServe опциональным. Запустите установку, выберите вариант Custom installation и активируйте компонент SvnServe.

Обсуждение закрыто.