Статья размещена автором Бетке Сергей Сергеевич

Контролируем изменения: управление версиями в Tortoise SVN

Контролируем изменения: управление версиями в Tortoise SVN В жизни современного системного администратора сценарии играют решающую роль, что правильно. Но рождённый однажды сценарий не останавливается на месте, а развивается. Иногда при этом возникает необходимость найти изменения, которые привели к нежелательным последствиям. И тут без системы управления изменениями никуда. Рассмотрим одну из таких систем.


Введение

В своих первых более менее крупных проектах использовал MS Visual Studio (тогда ещё – 6ая студия была). Тогда и пришла необходимость использовать систему управления версиями с многопользовательским доступом. И использовал, естественно, Visual SourceSafe. Но этот продукт входит в состав студии и бесплатным не является. Учитывая, что для целей администрирования нам хватает от студии MS Visual Studio Shell (что бесплатно), использовать не бесплатный Visual SourceSafe смысла нет.

Посему решил изучить Tortoise SVN (бесплатный), о котором далее и пойдёт речь.

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

Для начала – загрузим себе дистрибутив. Доступны варианты и на 32 бита, и на 64. Пробую 1.6.12. Качаем там же и русский language pack.

Контролируем изменения: управление версиями в Tortoise SVN Прелесть в том, что дистрибутивы представляют из себя msi пакеты, которые можно без проблем распространить по сети (администраторам, разработчиками, может – и ещё кому потребуется). Распространяем с помощью GPO.

Устанавливается совершенно без проблем, что радует. Огорчает лишь тот факт, что дистрибутив, хоть и msi, но не использует механизмов восстановления и установки по требованию.

Первый запуск

Контролируем изменения: управление версиями в Tortoise SVN Запустим продукт в первый раз. Пуск \ TortoiseSVN \ Settings. Первое, что следует сделать – выбрать русский язык интерфейса (если Вы уже установили языковой пакет, он также через GPO прекрасно распространяется). в Global Ignore Pattern прописываем маски имени файлов, которые не должны подвергаться контролю версий, сравнениям и так далее. Пока оставил как есть при установке.

Контролируем изменения: управление версиями в Tortoise SVN Несколько “бесить” могут настройки на следующей странице Context Menu. Выбранные глаголы интегрируются во все папки, что несколько мешает. Разработчики предоставили нам возможность указать маски каталогов (вида C:\Windows\*), для которых в контекстном меню глаголы SVN появляться не будут.

Контролируем изменения: управление версиями в Tortoise SVN На странице Dialog1 следует заполнить Default Path. Когда Вы будете “забирать” файлы на редактирование, они должны быть скопированы в доступную Вам папку. И по умолчанию Вам будет предлагаться путь, который Вы здесь и укажете.

Контролируем изменения: управление версиями в Tortoise SVN Следует обратить внимание на страницу Icon Overlays. По умолчанию выбрана опция Default Status Cache. Есть также вариант Shell. Суть в следующем: в первом варианте за отображение иконки папки отвечает отдельный процесс SVN, что несколько грузит проводник и при некоторых условиях может быть нежелательным. Если иконки видеть хотим, но проводник грузить не хотим – можно использовать вариант Shell, но при этом иконка будет присвоена только корневой папке проект, для вложенных папок иконка обрабатываться не будет.

Страница Network позволяет нам настроить proxy сервер. Эта опция будет полезна, если Вы разместите хранилище на web ресурсе, а не на сетевом или локальном ресурсе.

Кроме всего прочего, SVN обеспечивает интеграцию с bag tracking системами (Issue Tracker Integration). Эту опцию мы оставим на закуску, для начала имеет смысл просто с хранилищем и контролем версий разобраться.

Сам Tortoise SVN представляет Shell Namespace Extension к проводнику, а также предоставляет моникёр tsvn:http://tortoisesvn.googlecode.com/svn/trunk/. Подобного рода url обрабатываются SVN и рассматриваются как web сервисы хранилищ. По указанному url скачал все исходники SVN (75 Мб :-)).

Создадим первый проект, с этой целью в первую очередь почитаем документацию.

Основные преимущества Subversion и TortoiseSVN

Что делает TortoiseSVN таким хорошим клиентом Subversion? Вот краткий список возможностей (да простят мне разработчики некоторый плагиат):

  1. Интеграция с оболочкой.
    TortoiseSVN интегрируется непосредственно в оболочку Windows (т.е. в Проводник). Контекстные меню TortoiseSVN работают во многих других файловых менеджерах, и в диалогах для открытия файлов, используемых в большинстве стандартных Windows-приложений.
  2. Пометки на значках.
    Статус каждого версированного файла и папки отображается при помощи маленькой пометки поверх основного значка. Таким образом, вы сразу можете видеть состояние вашей рабочей копии.
  3. Простой доступ к командам Subversion.
    Все команды Subversion доступны из контекстного меню Проводника. TortoiseSVN добавляет туда собственное подменю.
  4. Версирование папок.
    CVS отслеживает только историю отдельных файлов, тогда как Subversion реализует «виртуальную» версионную файловую систему, которая отслеживает изменения в целых деревьях папок во времени. Файлы и папки являются версированными. В результате, есть команды переместить и копировать, реально выполняемые на стороне клиента и работающие непосредственно с файлами и папками.
  5. Атомарные фиксации.
    Фиксация сохраняется в хранилище либо полностью, либо не сохраняется вообще. Это позволяет разработчикам фиксировать изменения, собранные в логически связанные части.
  6. Версированные метаданные
    Каждый файл и папка имеет прикреплённый невидимый набор «свойств». Вы можете создавать и сохранять произвольные пары ключ/значение для собственных нужд. Свойства тоже версируются во времени, как и содержимое файла.
  7. Возможность выбора сетевого уровня.
    В Subversion есть абстрагируемое понятие доступа к хранилищу, которое упрощает реализацию новых сетевых механизмов. «Усовершенствованный» сетевой сервер Subversion является модулем для веб-сервера Apache, который использует для взаимодействия диалект HTTP под названием WebDAV/DeltaV. Это даёт Subversion большие преимущества в стабильности и совместимости, и предоставляет различные ключевые возможности без дополнительных затрат: проверка личности (аутентификация), проверка прав доступа (авторизация), сжатие потока данных при передаче, просмотр хранилища. Также доступна меньшая, автономная версия сервера Subversion, взаимодействующая по собственному протоколу, который легко может быть туннелирован через ssh.
  8. Единый способ обработки данных.
    Subversion получает различия между файлами при помощи бинарного разностного алгоритма, который работает одинаково как с текстовыми (читаемыми человеком), так и с бинарными (не читаемыми человеком) файлами. Оба типа файлов содержатся в хранилище в сжатом виде, а различия передаются по сети в обоих направлениях.
  9. Эффективные ветки и метки.
    Стоимость создания веток и меток не обязательно должна быть пропорциональна размеру проекта. Subversion создаёт ветки и метки, просто копируя проект с использованием механизма, похожего на жёсткие ссылки в NTFS. Благодаря этому, операции по созданию веток и меток происходят за одинаковое, очень малое время и занимают очень мало места в хранилище.
  10. Расширяемость.
    Subversion не имеет исторического багажа. Она реализована в виде набора совместно используемых библиотек на языке C с хорошо определёнными API. Это делает Subversion чрезвычайно удобной в сопровождении системой, пригодной для взаимодействия с другими приложениями и языками программирования.

Возможные варианты хранилища

Возможные варианты хранилища и доступа к нему описаны здесь:

file://
Прямой доступ к хранилищу на локальном или сетевом диске.

http://
Доступ через протокол WebDAV к Subversion, работающем на сервере Apache.

https://
Тоже самое, что и http://, но с шифрованием SSL

svn://
Не аутентифицируемый TCP/IP доступ через собственный протокол к серверу svnserve.

svn+ssh://
Аутентифицируемый, зашифрованный TCP/IP доступ через собственный протокол к серверу svnserve.

На этом этапе нас будет интересовать только file://

Создаём первое хранилище

Контролируем изменения: управление версиями в Tortoise SVN Создадим локальное хранилище. Скажем, в папке C:\Work\test\SVN. В дальнейшем перенесём его на сетевой ресурс. Исходя из полученных рекомендаций, выбираем систему хранения FSFS для создаваемого репозитория. Процедура создания описана здесь: http://tortoisesvn.net/docs/release/TortoiseSVN_ru/tsvn-repository.html.

Контролируем изменения: управление версиями в Tortoise SVN Вид папки после создания репозитория в ней показан на рисунке слева. Для того, чтобы увидеть его содержимое (а хранилище сейчас пустое), в контекстном меню воспользуемся глоголом Контролируем изменения: управление версиями в Tortoise SVNОбозреватель хранилища”. И действительно – хранилище пустое :-).

В указанной выше статье настоятельно просят нас использовать не сетевое хранилище, а клиент-сервер технологию. Хотя для нескольких администраторов, думается мне, эта технология будет избыточной. Посему пока остановлюсь на файл-серверной технологии.

Последуем совету и создадим через обозреватель хранилища рекомендуемые папки. Большинство людей создают папку trunk, в которой ведётся «основная линия» разработки, папку branches, содержащую копии ответвлений, и папку tags для копий меток. Если хранилище содержит только один проект, тогда их часто создают как папки верхнего уровня:

/trunk
/branches
/tags

Контролируем изменения: управление версиями в Tortoise SVN Сделаем мы через импорт временной папки, как и описано в конце главы. Результат положительный.

Итак, теперь мы имеем хранилище, доступное по следующему url: tsvn:file:///c:/work/temp/svn/SysAdm. Благодаря префиксу tsvn:, по такому url будет открываться обозреватель хранилища. Контролируем изменения: управление версиями в Tortoise SVN Так что теперь можем создать ярлык на наш первый репозиторий.

End User Interface

Контролируем изменения: управление версиями в Tortoise SVN Пользователю достаточно один раз получить содержимое в свою рабочую папку. В дальнейшем он имеет возможность выполнить все необходимые действия из контекстного меню проводника в своей папки (рисунок справа). Обратите внимание на информативные пометки в иконках файлов и папок! Ну очень удобно.

P.S. в последующих статьях по SVN планирую рассмотреть более подробно скрипты-“ловушки” (server-side hook) Subversion. И в первую очередь – на примере атоматическое правки ревизии зоны в SOA записи при фиксации изменении в .dns файле зоны (а может быть – и перезагрузка зоны DNS сервером, чтобы уже совсем удобно было :-)).

Отзывы » (1)

Опубликовать комментарий

XHTML: Вы можете использовать следующие HTML теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tags Связь с комментариями статьи:
RSS комментарии
Обратная ссылка