Пользователь
0,0
рейтинг
20 июля 2008 в 15:32

Разработка → Установка и настройка SVN (сервер+клиент)

По просьбам трудящихся, а так же учитывая, что есть статья по установке SVN (правда +Trac) под Linux, решил написать краткое описание установки и настройки SVN для Windows.
Ничего нового для людей, хорошо знающих и работающих с SVN, здесь не будет. Цель статьи — помочь некоторому проценту новичков, пребывающих на Хабре, таки осилить изучение этой системы контроля версий.

С самого начала сообщаю, что для SVN есть подробное руководство. Называется оно svn-book и доступно на сайте и идет вместе с CollabNet Subversion-server. Так же про установку и настройку svnserv с Apache есть описание в учебнике по TortioseSVN (довольно хорошая подробная помощь на русском).

На самом деле SVN-клиент может отлично работать и без сервера. Репозиторий (хранилище кода) можно создать в любом каталоге на собственном HDD, или в сетевом каталоге. Сервер требуется лишь для удаленного доступа к репозиторию, не больше. Локальный репозиторий годится, если над проектом работает один человек и ему просто нужна система контроля версий своего приложения и бэкапы.

Если работа ведется в команде или требуется удаленный доступ к репозиторию (через Интернет, например), нужно устанавливать SVN-сервер. Он может работать самостоятельно, либо через веб-сервер Apache. В первом случае доступ к репозиториям будет по протоколу svn://, во втором — http(s)://. Доступ через веб-сервер нужен при проблемах с файрволом, когда он пропускает только HTTP-трафик, а так же для работы некоторых утилит-примочек к SVN-серверу.

Установка сервера

Самую свежую версию svn-cервера всегда можно найти на сайте subversion.tigris.org. Чистый svn-сервер без Apache в комплекте, и без визуальных примочек доступен только для версии 1.4.6, в то время как текущая версия 1.5.0. Для версии 1.5.0 есть выбор между CollabNet Subversion-server-1.5.0 (~11 MB) и VisualSVN Server (~5 MB). Первый идет в комплекте с Apache, второй — с Apache и плагином для Windows Management Console. Так же для VisualSVN есть платная возможность интеграции с Visual Studio.

A. Установка и настройка сервера VisualSVN (svn-сервер + Apache + консоль управления) самая простая. Эту версию нельзя установить без Apache.

1) Скачиваем файл VisualSVN-Server-1.5.1.msi или новее. Запускаем установку.
2) В мастере установки указываем, использовать ли для доступа HTTPS, либо просто HTTP. Указываем порт для прослушивания по выбранному протоколу и способ аутентификации. Так же указываем каталог, в котором будут храниться репозитории.
3) После установки открываем Management Console (через Пуск, например) и создаем пользователей и репозитории.

Теперь ваши репозитории доступны через выбранный протокол (HTTP или HTTPS) по указанному при установке хосту: порту (например, localhost:8443/svn/). Их можно просматривать как из браузера (через xsl), так и из SVN-клиета.

Работа с сервером VisualSVNбезусловно самая простая.

B. Установка CollabNet Subversion Server (svn-сервер + Apache опционально).

1) Скачиваем файл CollabNetSubversion-server-1.5.0-23.win32.exe или версию новее. Запускаем его на установку.
2) Шаг Choose Components. Устанавливаем флажок SVNSERVE в любом случае. Если требуется установить так же Apache для SVN, устанавливаем флажок напротив него.
3) На шаге sunserve Configuration устанавливаем порт для sunserve (по умолчанию 3690, менять его смысла нет, если он не занят) и путь к репозиториям (каталог, где вы будете создавать отдельные репозитории в виде подкаталогов).
4) Затем настраивается Apache: хост/порт, путь к репозиториям (тот же, что и для svnserve) и префикс для URL (http://host:port/prefix). Префикс нужен на случай, если Apache будет использоваться не только для обслуживания SVN.

После установки появятся две новых службы Windows: Subversion Server (наш svnserv.exe) и Apache2.2 (если он был включен при установке). Чтобы все заработало их нужно запустить.

С. Установка svnserve 1.4.6 (чистый svn-сервер).

1) Скачиваем файл svn-1.4.6-setup.exe. Запускаем его на установку. При установке ничего кроме целевого каталога указывать не надо. После установки этот каталог надо добавить в переменную среды PATH (не помню, возможно это делается автоматически).
2) Создаем репозитории командой: svnadmin create c:\repositories\example-repository
3) Создаем сервис. Команда в консоли: sc create svn_svr binpath= «c:\Program Files\Subversion\bin\svnserve.exe --service -r C:\repositories\» displayname= «Subversion Svr»
Здесь -r C:\repositories — адрес каталога с репозиториями, т.е. от него потом будут вычисляться пути. Например, если есть 2 репозитория: C:\repositories\proj1 и C:\repositories\proj2, то указав параметром -r C:\repositories потом пути к репозиториям будут: svn://localhost:3690/proj1 и svn://localhost:3690/proj2 соответственно. Порт 3690 устанавливается по умолчанию, но его можно поменять (подробности в svn book).4) Запускается сервис автоматически при старте Windows или из списка служб.

Именно эту работу (если не считать установку Apache) сделал за вас установщик CollabNet Subversion Server. В случае установки svnserve 1.4.6 доступ к репозиторию будет только по протоколу svn://.

D. Создание репозитория. Выделяю этот пункт отдельным разделом. Если в VisualSVN создание репозитория производится кликом мыши, то для svnserve (в том числе в версии от CollabNet) репозиторий создается из консоли. В поставке snv-сервера есть файл snv-install-folder\bin\svnadmin.exe. Если путь к snv-install-folder\bin еще не прописан в PATH, сделайте это.

Чтобы создать репозиторий, откройте консоль (cmd) и перейдите в каталог для хранения репозиториев, который вы указывали при установке (CollabNet) или создании сервиса (svnserve 1.4.6). Создайте новый пустой подкаталог (например, example-repository). В консоли выполните команду: svnadmin create example-repository. В только что созданном каталоге появится структура файлов svn. В них есть много полезных «штук», о которых можно почитать в svn-book и учебнике.

В подкаталоге conf можно настроить основные параметры репозитория. Прежде всего требуется закрыть доступ в репозиторий кому-попало. В файле svnserve.conf раскомментируем строки
# anon-access = read
# auth-access = write

Не забудьте убрать так же пробел после #, т.к. иначе будет ошибка чтения конфига. anon-access определяет доступ анонимным пользователям, auth-access — зарегистрированным. Они могут принимать значения «write», «read» и «none». Обычно anon-access = none и auth-access = write.

Далее надо раскомментировать # password-db = passwd, а в файл passwd в этом же каталоге добавить строку user = password.

Для начала такое определение доступа годится, но в последствии конечно пароли надо шифровать (читаем svn-book).

На этом установка сервера закончена и можно установить клиент.

Установка клиента.

Некоторые профессионалы предпочитают работать с консолью. Наверное это не самый удобный способ, особенно для новичков, поэтому рассматривать его не будем. Другие работают с SVN через плагины к своим IDE. Это самый лучший способ, но поскольку разных IDE много и плагинов к ним тоже, в этой статье работу с ними не описываем.

Самым популярным и признанным клиентом SVN под Windows является TortoiseSVN. После его установки вы не получите отдельной программы, которую можно «классически запустить», клиент встраивается в проводник Windows, а команды для него доступны из контекстного меню файла (в т.ч. и в Total Commander).

Описывать установку клиента нет никакого смысла, там все элементарно просто.

О том, как работать с TortoiseSVN, подробно расписано в руководстве TortoiseSVN Клиент Subversion для Windows.

Дублировать это подробное руководство, конечно, желания нет, но все же super-fast-start work with tsvn опишу.

1) Для просмотра любого репозитория после установки TortoiseSVN вызовите контекствное меню на любом файле в системе, выберите меню TortoiseSVN→Repo-browser.  В открывшемся окошке введите адрес репозитория с протоколом (например, localhost:8443/svn/test или svn://someserver:3690/proj1/trunc). Откроется окно просмотра репозитория (с помощью кнопки напротив строки адреса можно выбрать, какую ревизию просмотреть; HEAD — это последняя ревизия).

2) Для создания локального репозитория (не используя сервер) запускается пункт меню TortoiseSVN→Create repository here... на нужном каталоге. В Repo-browser такой репозиторий доступен по протоколу file:///.

3) Для скачки себе версии из существующего репозитория запускается пункт меню TortoiseSVN→SVN Checkout на каталоге, в который сольется версия.

4) Если вы еще не использовали SVN и хотите залить на сервер свою текущую версию исходников, запустите пункт меню TortoiseSVN→Import... на каталоге, в котором лежит версия (при этом не забудьте, что разрабатываемую ветку надо лить в trunk).

5) TortoiseSVN→Export... используется для получения чистой версии исходников из репозитория (без служебных файлов контроля версий).

6) Если контекстное меню вызвать на каталоге, который является локальной (рабочей) копией репозитория, контекстное меню значительно расшириться. Например, появятся пункты Update (слить последние изменения с сервера) и Commit (закачать ваши изменения на сервер).

На последок рекомендую почитать интересную серию статей Работа с Tortoise SVN.
Валера Леонтьев @feedbee
карма
99,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (36)

  • –1
    Спасибо вам большое за изложенный материал.
    Давно хотел подружиться с svn, так как в последнее время действительно требуется, но не знал с чего начать. Мог бы, плюсанул.
  • –2
    ггг) Как раз сейчас ставлю в первый раз SVN на линуху=)
    На винду, оказывается, больше геммороя поставить=)
    • 0
      Нет, не больше. Просто на линуксе описание — несколько строк для командной строки, а в винде всякие окошки, клики и т.д. На самом деле все просто, когда понимаешь, чем отличается SVN-сервер от SVN-клиента, когда знаешь, что такое репозиторий и как с ним работать. Когда этого всего не знаешь, можно легко запутаться...
      • –3
        Ну как посмотреть=)
        СВН на линуксе ставится столько, сколько мощностя на машине - у меня вот уже час компилится и тестится - зато действий никаких- только путь к apxs прописал. Ну и сконфигурировать ещё минут 15. А на винде прокликал долго, зато ставится быстро=)
        • –1
          Прям самообман какой-то. В первом случае Linux высвобождает свободное время, для прогулки, чашечки кофе, а в Windows «будет тебе и кофе и какао и душ с ванной».
  • 0
    Полезно, спасибо.
  • 0
    В пункте С3 бэкслеши посъедались.
    • 0
      Спасибо, поправил.
      • 0
        И в пункте D тоже, «В поставке snv-сервера есть файл snv-install-folderbinsvnadmin.exe»
  • 0

    3) Для скачки себе версии из существующего репозитория запускается пункт меню TortoiseSVN
    • +1
      Блин, цитата сломалась. В общем автору - вы путаете чекаут и импорт :)
      Импорт - он для ДОБАВЛЕНИЯ в репозиторий, чекаут же - для создания рабочей копии на локальном компутере.
      Не очень понятен смысл сей статьи, я бы рекомендовал читать оригинальные инструкции по установке :)
      • 0
        Верно, исправил. На самом деле пользоваться ими приходится очень редко, оттого и перепутал.

        На счет смысла. В данном случае полно мануалов, но они довольно громоздкие. Начинающий прочитав мануал может по-просту запутаться в том, что ему нужно. Особенно это касается серверов. Так что для первого знакомства подойдет такая статья, а вот для последующего использования надо обязательно читать полные мануалы (это будет уже проще, так как понятно о чем идет речь). Собственно, принцип работы с SVN здесь не описан вообще, так что без родной документации никак.
        • +1
          svnbook если выборочно читать - всё с ним прозрачно и понятно, разве что только
          на английском :)

          А вообще в TortoiseSVN(!) есть чудесная дока "Chapter 3. Setting Up A Server"
          Рекомендую. :)
  • 0
    Классно! Спасибо за подробный рассказ об установке под Win, этой статьи как раз не хватало на Хабр. В избранное! Раньше синхронизация папок просто убивала некоторые изменения, особенно поздно ночью :(

    Дома валяется файловый сервер с выходом в инет. Помимо FTP и VPN, он теперь будет обладать и SVN. 10-кратное спасибо!
  • 0
    спасибо огромное! очень вовремя!
    а то последний дилаог с начальником был такой:
    - ну это... может нас систему контроля версий ввести?
    - ну так... вводите!
  • 0
    Как раз сегодня установил СВН третьим способом, поэтому могу уточнить.
    • После установки этот каталог надо добавить в переменную среды PATH (не помню, возможно это делается автоматически).
      Не делается автоматически. Да и переменная не нужна, если работать, к примеру, фаром.

    • svnadmin create c:repositoriesexample-repository
      слэш все еще потерян, да и лучше такие команды, думаю, писать так: svnadmin create path_to_repository_folder

    • 3) Создаем сервис. Команда в консоли: sc create svn_svr binpath
      Утилиты sc нет в том дистрибе, у меня во всяком случае у меня не появилось :). Кажется, это отдельная утилита для создания сервиса из приложения. Так как, тот про который говорилось в мануале был не найд(404), пришлось искать другой создатель сервисов. Я использовал NT Wrapper Lite
    • 0
      sc — это системная команда Windows:
      DESCRIPTION: SC is a command line program used for communicating with the NT Service Controller and services.
      USAGE: sc [command] [service name] ...
  • +1
    как и все в Windows установка SVN сводиться к:
    Download - DblClick_on_exefile - Next - Next - Next - Agree - Next - Finish

    в данном "руководстве" более уместным (читай - "достаточным") выглядело бы перечисление ссылок на:
    - Subversion
    - TortoiseSVN (GUI для пред.пункта)
    - и ровно один участок текста для copy&paste в httpd.conf

    все. ровным счетом статья высосана из пальца...

    З.Ы. Прошу прощения за столь радикальную критику...
  • 0
    Можно еще проще: svn+ssh. Без апача будет работать для всех юзеров, имеющих шелл не сервере.
    Если репозиторий проекта живет в /home/svnroot/my_project, то адрес чекаута будет
    svn+ssh://username@host.ru/home/svnroot/my_project

    Весь сетап — настроить права для директории /home/svnroot :)
  • 0
    на днях наконец-то начал пользоваться SVN, для удалённого проекта, который делаю не один, очень приятная штука SVN. Поставил на локалку, для локальных проектов. Спасибо за материал, мне лично помогло развеять лень читать длинные мынуалы, а тут все на блюдечке! Супер!
  • 0
    Я как-то тоже написал статью: Установка Subversion + Trac под Windows
    Может кому-то пригодится.
    • 0
      ссылка съелась:

      http://sites.google.com/a/dimchansky.info/dimchansky/Home/%D0%A1%D1%82%D0%B0%D1%82%D1%8C%D0%B8/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-Subversion---Trac-%D0%BF%D0%BE%D0%B4-Windows
  • 0
    У нас я ставил виндузятникам TortoiseSVN, а сам наслаждался Kdesvn. Коллеги, наблюдая интегрированность последней в Konqueror, а также наглядность её и Kompare, скулили и колебались между привычной вендою и незнакомым линуксом... так что линуксоидам могу смело порекомендовать сей клиент.
  • 0
    Альтернативный путь установки SVN на Windows - использовать инсталлятор от

    • 0
      ссылка не вставилась - http://bitnami.org/stack/subversion
  • 0
    А я для локальной работы ставил. Нужны только клиент с subversion.tigris.org (логин для обхода CollabNet'овской паранойи берётся на Bugmenot.com) и шесть файлов из svn-1.4.6-setup.exe (спасибо Вам за ссылку! а то приходилось старую версию из недр интернета использовать). Собственно, всё. Дальше читать FAQ и книгу.
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Спасибо, очень помогла статья под вин!
  • 0
    Спасибо
  • 0
    Команда sc create svn_svr binpath= «c:\Program Files\Subversion\bin\svnserve.exe --service -r C:\repositories\» displayname= «Subversion Svr» у меня не работает. Пришлось убрать displayName=
  • 0
    Долгое время пользовался сервисом на tigris'е, потом Google-code'ом. Сейчас возникла необходимость сделать проект, чтобы исходники лежали у меня и никому из посторонних доступны не были. Ваша статья очень помогла. Спасибо.
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Спасибо за пост! VisualSVN оказалось установить проще всего!
  • 0
    А реально ли установить свн на стандартный shared hosting с апачем?
    • 0
      Нет, нужен ssh и sudo
  • 0
    спасибо. помог быстро разобраться с свн сервером.
    я бы еще добавил ссылку на статью о структуре репозитория…
    например — www.gnuman.ru/stuff/svn_strateg/

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.