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

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

Категории:HOWTO Метки:, , , ,
  1. cheena
    11 июля 2013 в 07:59 | #1

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

  2. 11 июля 2013 в 19:15 | #2

    @cheena
    Запускать команды следует с правами локального администратора.

  3. SkyRi
    4 октября 2013 в 12:42 | #3

    При попытке запустить 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..
    Стоит коментировать все строки кторые по мануалы мы раскомментировали?

  4. SkyRi
    4 октября 2013 в 14:45 | #4

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

  5. 6 октября 2013 в 19:18 | #5

    @SkyRi
    Строки с комментариями можно вообще выбросить из конфига.

  6. Наталия
    14 октября 2013 в 17:50 | #6

    У меня в ответ на
    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.

  7. 16 октября 2013 в 14:45 | #7

    Наталия :

    The specified service already exists.

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

  8. Jason
    4 апреля 2016 в 16:56 | #8

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

Представьтесь, пожалуйста! Если ваш комментарий предполагает ответ, мы ответим на него в ближайшее время. Адрес электронной почты должен быть действительным.


Внимание! Запрещено публиковать любые ссылки в тексте комментария, иначе он сразу же будет помечен как нежелательный и не будет опубликован на сайте.