Subversion (SVN) — свободная централизованная система управления версиями. Необходимый инструмент программиста. Установка Tortoise SVN

Данная статья рассматривает вопрос установки сервера Subversion и клиентской программы Turtoise SVN на Windows.

Главное не пугаться этот процесс занимает немного времени для человека столкнувшегося с этим впервые и, конечно же, имеющего достаточную скорость чтения и восприятия материала:-).

Краткую информацию о Subversion можно найти .

Сервер Subversion

Первым этапом нам необходимо скачать и установить сервер Subversion.
Скачаем инсталяционный пакет свежей версии Subversion (http://subversion.tigris.org/servlets/ProjectDocumentList ) для Windows, т.е. «Windows binaries». В моем случае это «Setup-Subversion-1.6.0.msi».

После запуска инсталяции необходимо ввести путь установки. Я выбрал «c:\svn\» .

Установщик самостоятельно пропишет путь к исполняемым файлам Svn (c:\svn\bin ) и у Вас появится возможность запускать их из командной строки.

Дальнейшие команды будем выполнять в командной строке.

Далее: «Пуск»->»Выполнить» («Start»->»run») и вводим «cmd».

Жмем «Enter».Создадим наше первое хранилище:


Во вновь созданной директории «c:\svn\repo\conf\» раскомментируйте (необходимо удалить все символы перед директивами указанными ниже) и измените, если это необходимо, строки в файле svnserve.conf следующим образом:

Следующим шагом добавим несколько пользователей в файл-базу «c:\svn\repo\conf\passwd «.

К примеру:


Есть возможность установить сервер Subversion как службу Windows для обеспечения автозапуска, следующим образом:

, где sc create [имя нашей службы]

binpath=[путь к исполняемому файлу службы (svnserve.exe) и его параметры «—service» и «-r c:\svn\repo»] depend=[зависимости от других служб]

start=[тип запуска]
Подробнее работе с Windows командой sc можно почитать в справке Windows.

(Кстати, следует иметь в виду, что служба работает от прав локального пользователя. Если для выполнения каких-либо задач службе не хватает прав, необходимо в оснастке управления службами Windows выставить в свойствах службы пользователя, от которого необходимо запускать службу.)Для того, чтобы служба загрузилась, можно перезагрузить систему, но Мы воспользуемся командой:


, где net start [имя службы, введенное раньше]
После успешного запуска службы можно пользоваться хранилищем с помощью утилиты svn.
Для потребностей Subversion необходимо указать переменную окружения SVN_EDITOR для того, чтобы определить текстовый редактор по умолчанию. Это необходимо для соблюдения правил хорошего тона программирования — комментарии. Забегая немного вперед, объясню, при сохранении проекта в хранилище необходимо (желательно) указывать комментарии ко всем внесенным изменениям.

либо

Проверим работоспособность хранилища:

Если все настроено верно, откроется программа «notepad» в окне которой необходимо будет внести Ваш комментарий.
После сохранения документа и выхода, в командной строке Subversion запросит Вас ввести пароль Администратора. Пропускаем ввод пароля администратора нажатием кнопки «Enter». Вводим логин и пароль пользователя ранее добавленного в файл «c:\svn\repo\conf\passwd » (henrymotu = createitcomua). Если все прошло успешно, должна появиться запись «Committed revision 1.».

svn mkdir svn :// localhost/ myproject Authentication: < svn :// localhost:3690> Password for "Administrator" : [ enter] Authentication: < svn :// localhost:3690> Username: henrymotu Password for "henrymotu" : ************* Committed revision 1 .


Поздравляю! Вы только что отметились в Контроллере версий:-)
Мы использовали протокол svn://, который использует TCP порт 3690. Этот нюанс необходимо учесть в политике Вашего фаервола, чтобы к Вам смогли подключаться другие пользователи.

Клиент SVN

Можно использовать и стандартный svn клиент, но, чаще всего, для Windows используют TortoiseSVN. Данный клиент SVN существует в двух версиях: 32-х разрядной и 64-x разрядной. Скачаем свежую версию данного клиента (у меня TortoiseSVN-1.6.11.20210-win32-svn-1.6.13 ).

После установки можно проигнорировать перезагрузку системы.

Теперь, создадим каталог для нашего проекта. К примеру — c:\project .

Клиент TurtoiseSVN после установки встраивает свои пункты в контекстное меню директорий.

Выберем пункт «SVN Checkout…» в контекстном меню созданной директории (c:\project ).

В поле «Url of repository:» вводим адрес нашего хранилища svn://localhost/projectname/ (конечно, для сетевых пользователей следует вводить имя, либо IP-адрес Вашей машины в сети) и жмем «Ok».


Сейчас Tortoise сделала ассоциацию директории «c:\project» с хранилищем «svn://servername/projectname» в контролере версий. Любые изменения, внесенные Вами в проект в Вашей локальной системе могут быть отменены посредством контроля версий.

Есть стандартная форма структуры родительского каталога проекта — TTB (trunk-tags-branches):
Содружество пользователей Subversion склоняются использовать корень хранилища как родительского каталога проекта.
В каждом проекте создаются такие каталоги:
— trunk , который содержит файлы основного направления разработки проекта;
— branches, который содержит вариации основного направления разработки проекта;
— tags, который содержит «снимки» дерева проекта, которые создаются и удаляются, но никогда не изменяются;

Создадим данные каталоги в нашей рабочей версии проекта (в локальной версии).

Как Вы видите, каталоги отмечены знаком вопроса, который отображает, что данные изменения не приняты. Для принятия всех изменений внесенных Вами, выполним команду «SVN Commit…» контекстного меню каталога рабочего проекта.

В появившемся окне вводим текст комментария к изменениям и подтверждаем,что именно нужно принять. Конечно, комментарий можно и не вносить, но это, я повторюсь, считается хорошим тоном ведения процесса контроля версий.

Если Вы ранее не вводили данные учетной записи с правами на запись, они будут запрошены и после успешного ввода SVN Turtoise они будут сохранены для дальнейшего использования.


Можем более тонко настроить работу SVN Turtoise. Выполните команду «TurtoiseSVN»->»Settings».
Про все возможные параметры в данном окне можно прочитать в справке к программе, нажав кнопку «Справка».
Вкратце, здесь можно настроить внешний вид и порядок работы программы.

Удаленный пользователь Subversion

Для удаленного использования Вашего хранилища, на компьютере удаленного пользователя необходимо установить Turtoise SVN, как мы и рассматривали ранее. Главное не забыть, что необходимо ввести имя, либо IP-адрес Вашего компьютера при вводе URL-адреса хранилища в окне «SVN Checkout…».

Для данного примера, если IP-адрес нашего компьютера 192.168.1.1 — svn://192.168.1.1/projectname

Установка и русификация Tortoise SVN

TortoiseSVN — это бесплатный Windows-клиент с открытыми исходным кодом для системы управления версиями Apache™ Subversion®. То есть TortoiseSVN управляет файлами и директориями во времени. Файлы хранятся в центральном хранилище. Хранилище больше похоже на обычный файловый сервер, кроме того он запоминает каждое изменение когда-либо сделанное в ваших файлах и директориях. Это позволяет вам восстановить старые версии ваших файлов и проверить историю изменений — как, когда и кто изменял ваши данные. Вот почему многие думают о Subversion, и вообще о системах управления версиями, как о своего рода «машине времени».

TortoiseSVN работает под операционной системой Windows XP (c Service Pack 3) или выше, и доступен как в 32-битной, так и в 64-битной версии. Установщик для 64-битной Windows также включает 32-битную часть. Что означает что вы не должны устанавливать 32-битную версию отдельно чтобы контекстное меню и оверлей TortoiseSVN работало в 32-битных приложениях.

Где получить Tortoise SVN?


Для скачивания Tortoise SVN необходимо перейти на официальный сайт проекта расположенный по адресу http://tortoisesvn.net/downloads.html . На главной странице доступны две ссылки для 32-х и 64-х битной версии продукта (рис 1):
Дожидаемся окончания отсчета таймера (красная стрелка ) и перед вами появится стандартный диалог сохранения файла. Укажите путь куда вы хотите сохранить установочный файл и нажмите ОК . Если диалог для сохранения не появился попробуйте повторить попытку выбрав другое зеркало для скачивания (синяя стрелка ).
После окончания загрузки у вас на жестком диске будет лежать исполняемый файл TortoiseSVN.

Установка Tortoise SVN.


Запустите двойным щелчком исполняемый файл, который вы только что скачали. Перед вами должно появиться следующее окно (рис 3). Здесь разработчики приветствуют вас и предлагают начать установку нажав на кнопку Next . Чтож так и сделаем, жмем Next.

Рисунок 3

На следующем шаге приводится текст лицензионного соглашения, его необходимо прочитать и принять если вы желаете пользоваться программой или отклонить если оно вас не устраивает и вы хотите отменить установку (рис 4). Если все вас устраивает ставим переключатель на пункт I accept the terms in the License Agreement и нажимаем Next .

Рисунок 4

На следующем шаге (рис 5) у нас имеется возможность отключить ненужные нам компоненты. Получить описание каждого компонента можно нажав на его название и увидев справа в блоке Feature Description краткую характеристику. Выставляем нужные настройки и нажимаем Next.


Начинается процесс установки (рис 7).

Рисунок 7

После окончания установки вы увидите финишное окно (рис 8). Здесь разработчики говорят что установка закончена и вы можете начать пользоваться Tortoise SVN нажав на кнопку Finish . Также вы можете поддержать разработчиков нажав на кнопке Donate!.

Рисунок 8

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

Русификация TortoiseSVN.

Для получения файла перевода необходимо перейти на сайт проекта http://tortoisesvn.net/downloads.html и найти раздел Language Pasks (рис 9)

Рисунок 9

Напротив русского языка находится несколько ссылок:
  1. русификатор для 32-х битной версии
  2. русификатор для 64-х битной версии
  3. руководство по TortoiseSVN в PDF формате
  4. руководство по TortoiseMerge в PDF формате

Нажимаем на ссылку русификатора удовлетворяющего нашим требованиям (должен совпадать с установленной версией TortoiseSVN) и нас опять перенаправляет на сайт http://sourceforge.net. Действия по скачиванию абсолютно идентичны описанным выше.

После загрузки русификатора к себе на компьютер запустим двойным щелчком исполняемый файл. Перед нами появится диалог установки русского пакета (рис 10). Тут уже все по русски, так что читаем и жмем Далее.

После завершения установки появится окно (рис 12) в котором необходимо нажать кнопку Готово .

В настройка во вкладке General в разделе TortoiseSVN->Language выбираем русский (Россия) (рис 14). Сохраняем изменения и получаем русскую версию TortoiseSVN.

Рисунок 14

Для стабильной работы необходимо перезагрузить компьютер! Теперь все готово к работе.

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

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

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

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

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

Subversion (SVN) - свободная централизованная система управления версиями. Необходимый инструмент программиста.


Подготовка к установке

  1. Предварительно необходимо (отдельно или в составе ).
  2. Скачать последнюю версию Subversion для Windows: (на момент написания статьи — версия 1.7.6)

Установка

  1. Запускаем установщик. Здесь все очень просто и прямолинейно. Единственное значимое действие — выбор пути установки. В моем случае это c:\Program Files (x86)\Subversion\ .
  2. Добавляем папку в SYSTEM PATH.
    Открываем Пуск -> Компьютер -> Свойства -> Дополнительные параметры системы ->вкладка Дополнительно -> Кнопка Переменные среды.
    В разделе «Системные переменные» находим переменную Path и нажимаем кнопку Изменить. В конец строки дописываем путь к папке bin. Разделитель путей — точка с запятой «;».
    Кстати, установщик справился с этим заданием сам, так что мне осталось только проконтролировать:)
  3. Из папки 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.
  4. Далее переходим в папку 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

    и активируем их, т.е. убираем решетку (#) в начале обоих строк.

  5. Там же добавляем две новые строки:
    LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
  6. В самый конец файла дописываем директиву: Include "conf/svn.conf"
  7. Сохраняем httpd.conf .
  8. Теперь необходимо создать папку, в которой будет храниться база данных репозитория. Например E:\_SVN. Создаем ее как обычно через Проводник или любой другой файловый менеджер.
  9. Создаем репозиторий. В командной строке выполняем: svnadmin create E:\_SVN
  10. Возвращаемся в папку c:\Program Files (x86)\Zend\Apache2\conf . Создаем в ней новый файл svn.conf (в п.6 мы уже подключили его к httpd.conf ) со следующим содержанием: DAV svn SVNPath E:/_SVN

    В SVNPath указывается путь к папке репозитория.

  11. Чтобы изменения вступили в силу, перезапускаем службу Apache.
  12. Проверяем, что получилось.
    Для этого открываем браузер и вводим в адресную строку: 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

В обоих случаях вы должны увидеть созданную структуру папок.

Настройка прав доступа

  1. Первый шаг — создание пользователей.
    Открываем командную строку, переходим в папку установки 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 — имя пользователя.

    После ввода команды, необходимо ввести пароль пользователя, затем повторно подтвердить его.

  2. Удаление пользователя.
    В отличие от htpasswd, htdigest не может удалять пользователя. Поэтому единственный выходручное редактирование файла.
  3. Теперь переходим к настройке прав доступа.
    В папке репозитория (e:\_SVN ) создаем еще один файл — acl с примерно таким содержанием (используем Блокнот): # # Группы пользователей # team1 = Max, Sergey # # Доступ к корню # team1 - чтение и запись # все остальные - только чтение # [/] @team1 = rw * = r # # Доступ к project1 # team1 - чтение и запись # Ivan - чтение и запись (у него доступ только к этому проекту) # Dub - доступ запрещен # @team1 = rw Ivan = rw Dub =
  4. Вносим изменения в svn.conf : DAV svn SVNPath e:/_SVN AuthName "SVN" AuthType Digest AuthUserFile e:/_SVN/auth AuthzSVNAccessFile e:/_SVN/acl # Authorization: Authenticated users only Require valid-user

    Обратите внимание на параметр AuthName, его значение должно совпадать с параметром realm, введенном при создании пользователя.

  5. Чтобы изменения вступили в силу перезагружаем службу Apache.
  6. Проверяем результат. Теперь при открытии репозитория должны запрашиваться имя пользователя и пароль.

Работать с Subversion из командной строки — страшный анахронизм. В следующей статье я покажу как установить и использовать клиент Subversion в популярной среде разработки .



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: