Использование Subversion для командной разработки

Большинство современных проектов не пишутся в одиночку, и перед разработчиками встает проблема совместного владения кодом и другими артефактами проекта. Даже если над проектом работает всего несколько человек, объединение внесенных изменений в общую версию может занимать много времени. Для решения данной задачи используют системы управления версиями (от англ. Version Control System (VCS) или Revision Control System), которые позволяют хранить в централизованном репозитории множество версий артефактов проекта (документов, файлов и т.д.). Репозиторий — хранилище каких- либо данных. Данные в репозитории обычно хранятся в виде файлов или с использованием систем управления данными (СУБД), которые обеспечивают надежные механизмы для манипулирования данными. Даже если над проектом работает один человек, использование систем управления версиями оправдывает затраченное на их изучение и конфигурирование время. VCS являются удобным репозиторием для исходного кода проектов, позволяют хранить всю историю изменений, что, в свою очередь, позволяет восстановить и пересобрать любую версию проекта (например, для воспроизведения разработчиком найденных тестировщиками ошибок в программе), восстановить удаленный блок кода и т.д.

В мире свободного программного обеспечения (ПО) наибольшую популярность приобрели VCS-системы — такие, как Concurrent Versions System (CVS) и Subversion (SVN). Многие компании — разработчики ПО выбирают именно Subversion, так как данная система была разработана специально для решения ряда проблем устаревшей системы контроля версий CVS и позволяет обойти некоторые ограничения, присущие CVS. Subversion распространяется по свободной Apache/BSD-style ( сайт ) лицензии и доступна по адресу сайт .

На сайте проекта доступны бинарные версии сборок для различных операционных систем, также доступен исходный код, который может быть использован для самостоятельной компиляции. По адресу сайт доступна электронная книга "Управление версиями в Subversion", переведенная на многие языки включая русский. В ней детально описана архитектура Subversion и принципы работы с данной системой контроля версий. Разработано несколько клиентских графических интерфейсов для упрощения работы с данной системой управления версиями.

Для ОС Windows разработан удобный встраиваемый в оболочку Windows клиент TortoiseSVN ( сайт ). К сожалению, при работе с большими проектами, которые содержат несколько тысяч файлов, возможны неконтролируемые "замораживания" системы на некоторое время. Это, вероятно, связано с рекурсивными операциями TortoiseSVN по кэшированию файлов проектов при попытке войти проводником Windows в каталоги, которые содержат SVN-проекты. Тем не менее, данной программой довольно удобно пользоваться, несмотря на данную проблему.

Настройка Eclipse IDE для работы с SVN

При работе с проектами на Eclipse удобно пользоваться дополнительным подключаемым модулем Subclipse — сайт проекта расположен по адресу сайт . Для установки данного модуля нужно зайти в меню обновлений: Help -> Software Updates -> Find and Install..., в мастере обновлений на первой странице выбрать радиокнопку Search for new features to install и на следующей странице добавить сайт обновлений сайт нажав кнопку New Remote site…


Рис. 1. Добавление сайта обновлений

Замечание

Для экономии интернет-трафика или при ограничении доступа в Сеть, связанном с политикой безопасности, можно скачать архив сайта обновления и развернуть его на общедоступном ресурсе в локальной сети. Доступ к локальному сайту настраивается нажатием кнопки New Local Site. После сканирования сайта обновлений мастер предложит выбрать модули, доступные на сайте обновлений.


Рис. 2. Выбор модулей обновления

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

Замечание

Хорошей практикой является установка дополнительных модулей в специально созданный каталог, отличный от предлагаемого Eclipse IDE по умолчанию. Это позволяет использовать общие ресурсы для различных сборок Eclipse (M1,M2 и т.д.), а также при необходимости удалять модули вручную. После загрузки модулей мастер обновлений попросит произвести перезагрузку среды Eclipse IDE, после которой будут доступны функции по работе с SVN.

Замечание

Для контроля корректности установки модулей активации/деактивации можно воспользоваться менеджером конфигураций, который вызывается из меню Help -> Software Updates -> Manage Configuration... Для подсветки неактивных из-за ошибок или отключенных модулей нужно нажать кнопку
Show Disabled Features.


Рис. 3. Менеджер конфигурации

Переходим в проекцию работы с SVN из меню Window -> Open Perspective -> Other -> SVN Repository Exploring или открываем панель SVN репозитория из меню Window -> Show view -> Other -> SVN -> SVN Repository. С помощью контекстного меню данной панели вызываем мастер добавления адреса SVN- репозитория.


Рис. 4. Контекстное меню вызова мастера добавления адреса SVN-репозитория

Вводим адрес репозитория.


Рис. 5. Диалог ввода адреса репозитория

Для извлечения каких-либо ресурсов (проектов, папок, файлов и т.д.) применяется команда Checkout. На рисунке показан пример выбора проекта аранжировщика файлов (File arranger) из рабочей ветки репозитория. Для выполнения данной операции в контекстном меню укажем команду Checkout.


Рис. 6. Контестное меню Checkout

Далее мастером будет предложен выбор типа ресурса и его местоположения в рабочем пространстве. Обычно выбираются значения по умолчанию.


Рис. 7. Мастер извлечения проекта из SVN-репозитория

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

Замечание

Все перечисленные операции по извлечению проектов из репозитория можно выполнить и из навигатора проектов вызовом мастера импорта проектов из контекстного меню Import -> Other -> Checkout Projects from SVN.

Основы работы с Subversion

Обычный цикл работы над программными модулями заключается в следующих этапах:

1. Обновление локальной (рабочей) копии проекта и содержимого репозитория.
2. Правка ресурсов проекта.
3. Фиксация изменений.

Связанные с Subversion команды доступны из контекстного меню Team любого ресурса проекта. Статус ресурсов проекта помечается оверлейными иконками. Например, вопросительный знак показывает, что ресурс не добавлен в репозиторий, черная звездочка отмечает ресурсы, в которых сделаны локальные изменения, а плюс указывает, что ресурс помечен на добавление в репозиторий. Обновление рабочей копии и содержимого репозитория осуществляется вызовом команды Update. При этом часть ресурсов, измененная другими разработчиками, сливается с текущими изменениями локальной копии проекта. Иногда возможны ситуации, когда система не может автоматически решить конфликты слияния, и данную операцию приходится делать вручную. Мастер разрешения конфликтов вызывается командой Edit conflicts. Практика показывает, что при периодическом обновлении локальной версии количество конфликтов сводится к минимуму (обычной практикой является обновление проекта перед началом работы).

Замечание

Если локальная версия не зафиксирована в репозитории, то перед обновлением локальной копии проекта полезно делать архив текущей версии. Это позволит снизить потери времени, если вдруг окажется, что версия в репозитории находится в нерабочем состоянии. После добавления новых локальных ресурсов в проект их надо пометить для добавления в репозиторий командой Add to version control. Часть локальных ресурсов создается автоматически при компиляции проекта. Обычно такие ресурсы помечаются системой контроля версий как игнорируемые. Для этого служит команда Add to svn:ignore. Это позволяет снизить сетевой трафик на бесполезную передачу данных. Существуют различные стратегии фиксации изменений. Особенностью свободных проектов является возможность привлечения сторонних разработчиков. Обычно выделяют некоторую группу ведущих разработчиков, которые вносят изменения непосредственно в рабочий репозиторий, и часть разработчиков с ограниченными правами доступа. Для фиксации изменений такими разработчиками подготавливаются патчи изменений, которые проверяются ведущими разработчиками и вносятся в репозиторий.

Для работы с патчами служат команды Create patch и Apply Patch. Патчи могут создаваться как обычные текстовые файлы и пересылаться по почте или прикрепляться как вложения к задачам в системе управления проектами. Удаление ресурсов проекта выполняется командой Delete с последующей фиксацией сделанных изменений в родительском каталоге. Для отмены изменений служит команда Revert. Фиксация сделанных изменений непосредственно в репозиторий производится командой Commit. Если при выполнении какой-либо операции работы с SVN нормальное выполнение операции было прервано (например, из-за обрыва соединения с сервером), то для восстановления корректного состояния локальной копии нужно вызвать команду Cleanup.

Важно

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

И только удостоверившись, что все работает корректно, фиксировать изменения в репозиторий. Для доступа к репозиторию проекта "Аранжировщик файлов" нужно зарегистрироваться на сайте сайт . После регистрации вам будет создан аккаунт на javaforge. Для доступа к ресурсам проекта filearranger надо в форме просмотра списка проектов найти проект filearranger и нажать на линк мониторинга или присоединения к проекту. По умолчанию выставлены права внешних разработчиков, так что исходный код и документация будут доступны.

Адрес SVN-репозитория:сайт . Текущая информация по настройкам доступа к репозиторию проекта доступна по адресу: сайт .

Наиболее известные системы контроля версий:
. Concurrent Versions System (CVS), сайт .
. Subversion (SVN), сайт .
. Microsoft Visual SourceSafe (VSS), сайт .
. Rational ClearCase, сайт .

Сергей Бердачук,
http://www.berdaflex.com


Компьютерная газета. Статья была опубликована в номере 29 за 2006 год в рубрике программирование

©1997-2024 Компьютерная газета