Контроль версий проекта Delphi в Rational ClearCase

© 2002 Большаков Олег
http://www.rdl.far.ru

Материал был опубликован в августовском
номере журнала "Программист" за 2002 год

Некоторое время назад тема контроля версий разрабатываемых продуктов с помощью специализированных систем была актуальна только для крупных софтверных фирм. Маленькие же фирмы и программисты-одиночки вынуждены были осуществлять контроль версий своих программ вручную, создавая на жестких дисках сотни каталогов с различными версиями исходных кодов. В настоящее время, когда на рынке программного обеспечения предлагается не один десяток систем для контроля версий, да и разрабатываемые программы давно уже перешагнули рубеж 50-100 тысяч строк исходного кода, проблема контроля версий стала актуальной для всех категорий разработчиков.

Попробуем определить более точно, для чего же нужна система контроля версий: прежде всего – для централизованного и упорядоченного хранения и обработки файлов, из которых состоит проект разрабатываемого программного продукта, а также всей сопроводительной его документации. Типичная система контроля версий поддерживает историю дерева каталогов с исходным кодом, работая с последовательностью изменений. Система маркирует каждое изменение моментом времени, когда оно было сделано, и именем пользователя, совершившим изменение. Как правило, пользователь, совершающий изменение, также предоставляет текстовое описание причины, по которой произошло изменение. Такой механизм позволяет системе обеспечить возможность формирования "хронологического дерева" событий в истории обработки файлов с учетом всех их перемещений, возвратов на доработку, вхождений в качестве составной части в другие проекты и т.д. Благодаря поддержке механизма контроля версий есть возможность однозначно определить кто, когда, на каком этапе, на каком рабочем месте произвел то или иное изменение в исходном коде проекта. Таким образом, типичная система контроля версий предоставляет следующие возможности по хранению файлов:

Основные общие термины, используемые в системах контроля версий – это проект и версия проекта.

Проект - под проектом понимается вся совокупность файлов исходных текстов различных языков программирования, ресурсных и других файлов, необходимых для сборки программного продукта (одного или более исполняемых файлов, библиотек DLL и так далее). Часто к проекту добавляются исходные тексты файлов справки (Help files), сценарии программ инсталляции, а также сопроводительная документация проекта и так далее. Хранение составляющих проекта осуществляется таким образом, чтобы обеспечить доступ к любой из зафиксированных версий проекта.

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

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

В эволюции сред разработки все более явственно проявляется процесс интеграции средств, используемых для программирования (Microsoft Visual Studio, Borland Enterprise Studio, пакет Oracle), вплоть до того, что среда разработки становиться единой (Visual Studio .NET). Соответственно, также успешно интегрируются в среды разработки и системы контроля версий. Например, Oracle JDeveloper помимо внутренней системы, работает и с системами контроля версий сторонних производителей (Rational ClearCase, Microsoft Visual SourceSafe и др.). Среда Microsoft Visual Studio почти с самого своего рождения интегрирована с Microsoft Visual SourceSafe. И только Borland немного обошла вниманием свои среды разработки, не предоставив разработчикам удобного средства для контроля версий. Многие сейчас могут поспорить с этим утверждением, вспомнив про Borland Team Source, но те программисты, которые работали в MS Visual Studio с MS Visual SourceSafe и в Delphi с Team Source, знают насколько удобнее интегрированная система.

Исправляя "недочет" фирмы Borland, некоторые компании предлагают либо свои системы контроля версий, разработанные специально для Delphi, либо утилиты, обеспечивающие интеграцию Delphi с уже разработанными системами. В первой категории действительно профессиональных продуктов немного, например, к ним можно отнести бесплатную систему FreeVCS, а вот во второй категории выбор гораздо больше, пример одной из самых популярных систем, – Devrace Athlant, разрабатываемой российскими программистами.

В настоящее время среди разработчиков программного обеспечения очень популярен пакет Rational Suite или его отдельные компоненты, предоставляющий средства для проектирования, разработки, тестирования и сопровождения программного обеспечения (см. "Программист" №№ 2, 3, 5/6 за 2001 год). В этот же пакет входит очень мощная система контроля версий Rational ClearCase. В моей предыдущей статье Проектирование на Rose Delphi Link была рассмотрена возможность проектирования программного обеспечения в среде Rational Rose и генерации по построенной объектной модели исходного кода Delphi (только декларативных объявлений), используя в качестве моста-связки утилиту фирмы Ensemble Rose Delphi Link. В новой версии Rose Delphi Link, которая была анонсирована в начале этого года, и получила номер 3.2.20020426, была добавлена возможность интеграции Delphi с Rational ClearCase. Этой новой возможностью продукта фирма Ensemble Systems еще более тесно связала Rational Suite и Borland Delphi. К сожалению Rose Delphi Link 3.2.20020426 перестала быть бесплатной, и теперь с сайта разработчиков можно загрузить только пробную 30-дневную версию (http://www.ensemblesystems.com/RoseDelphiLink.html), дистрибутив по сравнению с предыдущей версией увеличился почти вдвое – 16,3 Мбайт. Работа с этой версией Rose Delphi Link с условием использования Rational ClearCase, подразумевает базовые знания основ пакета ClearCase.

При установке Rose Delphi Link определяет наличие установленного Rational ClearCase, и если не обнаруживает его, выдает соответствующее предупреждение, но не прерывает установку. После установки в среде Delphi появляется дополнительное меню ClearCase, которое содержит всего два пункта – Preferences и Show Browser. Соответственно, при выборе первого открывается окно настроек контроля версий, а при выборе второго браузер проектов ClearCase.

В окне настроек Delphi ClearCase Link Options можно установить следующие параметры проекта:

Выбор пункта меню ClearCase -> Show Browser отображает браузер проектов ClearCase. Браузер удобно встраивается в окно редактора кода (рис.1), что позволяет постоянно держать его на виду.

Рис.1. Браузер проектов ClearCase, встроенный в редактор кода Delphi.

Теперь поставим перед собой задачу, которая смоделирует основные моменты использования типичной системы контроля версий, и посмотрим, каким образом, с помощью ClearCase и Rose Delphi Link, можно ее решить. Задача будет состоять в следующем: необходимо начать проект в Delphi, поставить его под контроль в системе ClearCase, сделать несколько рабочих версий проекта, вернуться к одной из версий, внести в нее изменения и "слить" с последней версией проекта. Рассматривать ответвления (branches) дерева версий ClearCase в рамках данной статьи не будем, в виду сложности их создания и настройки.

Для начала работы необходимо, чтобы в системе был смонтирован хотя бы один том (VOB) ClearCase, в котором будет храниться проект (процесс подготовки томов подробно расписан в документации по ClearCase). В системе ClearCase возможно использование двух вариантов хранения версий: с использованием SnapShot’ов (снимков), когда текущие версии проекта располагаются в определенной папке, и с использованием DynamicView (динамических видов), когда для проекта в системе создается виртуальный диск. Мы будем использовать DynamicView в виду относительной простоты его использования.

Для создания нового вида нужно воспользоваться кнопкой "Create View" в браузере проектов ClearCase, и пройти все шаги стандартного мастера ClearCase. Я дал виду имя "ViewDelphiProject", для его размещения указал диск Z (рис.2), а для хранения текущих файлов проекта на этом диске создал каталог TrainProject.

Рис.2. Виртуальный диск ClearCase.

Для работы с системой контроля версий нужно сохранить все файлы проекта на диск Z в только что созданный каталог TrainProject, и поставить проект под контроль (Add to Version Control). Основной смысл этого действия – уведомить систему контроля версий о том, какой файл следует взять под контроль. Поставить нужные файлы под контроль можно посредством выбора пункта Add to Version Control в контекстном меню на нужном файле (рис.3).

Рис.3. Постановка файлов проекта под контроль.

В окне "Add to Version Control" (рис.4), которое выдает Rose Delphi Link, необходимо указать нужные файлы, и ввести комментарий, например, "поставлен под контроль". После этого файлы принимают состояние "check-out", а значки файлов помечаются красной галочкой (рис.5).

Рис.4. Выбор файлов для контроля и ввод комментария.

Рис.5. Вид значков файлов после постановки под контроль.

Следующий шаг – работа с проектом и внесение в него некоторых изменений. Так как основная цель статьи – показать возможности интеграции Delphi и ClearCase, не будем писать полнофункциональную программу, а ограничимся лишь "условным" изменением файлов, т.е. внесением комментариев в исходный код, изменением заголовка формы и размещением простых компонентов (рис.6).

Рис.6. Внесенные изменения в файлы проекта.

Теперь, когда исходные файлы изменены, можно "сдать" проект под контроль в систему ClearCase (check-in), предварительно сохранив все изменения. Для этого в контекстном меню на файлах проекта необходимо выбрать пункт Check-in или пункт Check-in Main Project Files. В появившемся окне (аналогичном окну на рис.4) необходимо выбрать файлы, отдаваемые под контроль, и ввести комментарий (в нашем случае "Версия 1.0"). Если настройки Rose Delphi Link не изменены, то текущий проект Delphi закрывается. При следующем открытии этого проекта значки файлов в браузере ClearCase отмечены замочком, что означает состояние файлов "Check-in" (рис.7).

Рис.7. Файлы проекта в состоянии "Check-in".

Выбором на файлах проекта в контекстном меню пункта Check-out, получаем актуальную версию файлов проекта, которые сразу же загружается в среду разработки Delphi.

Внесем еще несколько изменений в проект, столь же незначительных, как и в первый раз: например, добавим кнопку Close, закрывающую окно, и комментарий, описывающий новую версию, после чего "сдадим" эту версию проекта под контроль ClearCase’а, отметив ее как "Версия 2.0".

Теперь сделаем вид, что в модуле Main мы допустили большую ошибку, и необходимо вернуться к более ранней версии (в нашем случае, к версии 1.0). В браузере ClearCase выделим файл Main.pas и нажмем кнопку "Version Tree", после чего отобразиться окно просмотра дерева версий ClearCase (рис.8).

Рис.8. Дерево версий файла Main.pas

Как видим, в ClearCase’е сейчас три версии модуля Main: начальная версия, версия 1.0 и версия 2.0. Нам необходимо вернуться к версии 1.0 (на диаграмме кружок с номером 1). Для того чтобы загрузить версию 1.0 для редактирования в среду Delphi на диаграмме в контекстном меню по версии 1.0 необходимо выбрать пункт "Check-out". На диаграмме версий между кружками 1 и 2 появиться кружок без цифры с меткой "RESERVED", а в среде Delphi будет доступен для редактирования модуль Main версии 1.0.

В среде Delphi, помимо файла Main.pas, под редактирование также нужно взять файл Main.dfm, чтобы впоследствии не возникла ошибка, т.к. эти два файла связаны между собой.

Внесем следующие изменения: с формы удалим кнопку, добавим на ее место метку, исправим комментарии в исходном коде и сохраним изменения. Теперь при попытке сдать файлы под контроль (check-in), ClearCase выдает сообщение о том, что найдена более поздняя версия файла (рис.9), и предлагает слить текущую версию файла с последней версией.

Рис.9. Сообщение о слиянии версий.

Слияние версий выполним графически, установив галочку "Merge the file graphically", в окне Diff Merge (рис.10). Подробнее о слиянии версий см. руководство ClearCase.

Рис.10. Слияние версий в ClearCase Diff Merge.

После проведения слияния последней и актуальной версией становиться версия 1.5, полученная путем слияния измененной версии 1.0 и последней версии 2.0 (рис.11).

Рис.11. Результат слияния версий 1.0 и 2.0

По такому же принципу строиться и дальнейшая работа с проектом.

В статье рассмотрены только основные возможности Rose Delphi Link, касающиеся принципа работы Delphi с системой контроля версий ClearCase. Помимо этих возможностей, Rose Delphi Link также поддерживает следующие функции:

Учитывая всю мощь и богатство возможностей Rational ClearCase и интеграцию со средой Delphi, которую предоставляет Rose Delphi Link, становиться возможным полный контроль над исходными кодами Delphi и конфигурацией проектов, как рядовых разработчиков, так и руководителей подразделений. Легкая интеграция Rational ClearCase с такими мощными и широко используемыми продуктами как Microsoft Word, Microsoft Visual Studio, Oracle JDeveloper и др., позволяет в рамках одного проекта контролировать не только исходные коды Delphi, но и исходные коды, разработанные в других средах программирования, сопроводительную документацию, и проекты, ведомые в других продуктах Rational. Последнее обстоятельство открывает почти неограниченные возможности по контролю версий и еще больше приближает разработку в Delphi к стандартам RUP.

Литература:

  1. "Rational ClearCase. Release Notes" (оригинальная документация)
  2. "Managing Software projects with ClearCase" (оригинальная документация)
  3. Н.Попов "Delphi: система контроля версий Team Source"
  4. А.Новичков "ClearCase – система конфигурационного и версионного контроля)"
  5. А. Новичков "Обзорная статья по Rational ClearCase - системе конфигурационного и версионного контроля"

2011123456789101112
2010123456789101112
2009123456789101112
2008123456789101112
2007123456789101112
2006123456789101112
2005123456789101112
2004123456789101112
2003123456789101112
2002123456789101112
2001123456789101112
2000123456789101112
1999123456789101112

Последние статьи
Литература