Эксперты для интеграции Borland Delphi и систем контроля версий

© 2003 Голубовский Андрей,
Технология Клиент-Сервер 2003'2

На сегодняшний день системы контроля версий (Version Control System, VCS) используют почти все разработчики программного обеспечения. Это касается не только крупных фирм-производителей программного обеспечения и больших коллективов, но и программистов-одиночек. О пользе систем контроля версий сказано уже достаточно много. Назначение таких систем различное – это хранение проекта, ведение коллективной разработки, автоматизация отслеживания изменений кода и т.д. Если Вы работаете над проектом в составе группы и используете общий код, то без VCS обойтись трудно. Но все же, основное достоинство подобных систем заключается в том, что они позволяют не потерять ни одной строчки кода. Поэтому поводу я расскажу случай, который произошел у нас на работе лет восемь назад. За ночь воры вынесли все системные блоки из комнаты, где сидела группа разработчиков. В результате были потеряны все исходные тексты проекта, над которым группа из пяти человек работала почти год (т.е. потеря около 50-60 человеко-месяцев). И это все на пороге сдачи проекта! Но в то время группа уже пользовалась Gupta TeamWindows (системой совместного ведения проектов, которая входила в поставку передового, на тот момент, средства разработки Gupta SQLWindows). А сама база TeamWindows с проектом лежала на сервере, который находился в другом месте. Вот так благодаря системе контроля версий был спасен проект (довольно важный для нашей организации).

Как работает простейшая система контроля версий? Несколько разработчиков могут одновременно работать в проекте, используя клиент-серверную модель VCS, в соответствии с которой исходный код проекта хранится на отдельном сервере, каждый программист получает его на свою "локальную" машину с сервера (checkout) и туда же "возвращает" изменения, после того, как работа заканчивается (checkin). Каждый раз, когда кто-либо из программистов посылает измененные файлы на сервер VCS, там сохраняются отличия от предыдущей версии. Это позволяет воссоздать любую из прежних версий каждого файла, хотя по умолчанию сервер "раздает" самую последнюю версию. VCS маркирует каждое изменение моментом времени, когда оно было сделано, и именем пользователя, совершившим изменение. Обычно человек, совершивший изменение, также предоставляет текстовое описание причины, по которой произошло изменение. Вооружившись всей этой информацией, система контроля версий может отвечать на такие вопросы, как

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

С выпуском Delphi в 1995 году компания Borland периодически возвращалась к идее встроить в среду разработки (IDE) Delphi систему контроля версий. Большинство производителей VCS по инерции ориентировались на крупные компании-производители программного обеспечения, которые не рассматривали Delphi, как полноценное средство разработки, или же старались использовать уже имеющиеся наработки, что привело к отсутствию интеграции их продуктов в IDE Delphi и этой интеграцией должна была заниматься сама Borland. Начиная со второй версии Delphi разрабатывался с учетом Open Tools API [1], благодаря этому программисты смогли самостоятельно подключать к ней системы контроля версий. Используя Open Tools API в Delphi 2 Developer и Client/Server разработчики встроили lite-версию Intersolv PVCS (она даже поставлялась с версией Client/Server). Но это нельзя считать прорывом, поскольку эта версия являлась скорее переходным средством к "полноценной" версии Intersolv PVCS. До недавнего времени VCS-продуктов поддерживающих Delphi и язык Object Pascal вообще не существовало (очевидно по причине того, что большинство проектов, использовавших различные VCS, ранее велось на языке C/C++, а в США еще и на COBOL и ему подобных). Системы, ориентированные на Delphi, обладающие возможностью подключения в виде расширений и экспертов к IDE Delphi, полностью использующие возможности Open Tools API, появились лишь в конце 1998 - начале 1999 года. Например, FreeVCS - бесплатная система контроля версий проектов для Delphi 4, разработанная Томасом Хенсле (Thomas Hensle) [2]. Поэтому на фоне некоторой неразберихи с продуктами VCS заметным событием стало появление Borland TeamSource в составе Delphi 5 - системы контроля версий проектов, разработанной, а главное, используемой, инженерами Borland в их собственных проектах.

TeamSource – это система, предназначена для управления версиями проектов, разрабатываемых с использованием Borland Delphi и Borland C++ Builder. Она была изначально создана для сопровождения проектов на Delphi и C++ Builder, поэтому полностью интегрировалась в их среду. Тем не менее, TeamSource, как и многие другие VCS, может быть использована для хранения и контроля версий файлов, не связанных со средствами разработки, например, документов MS Word. Еще необходимо упомянуть, что TeamSource поставлялась вместе с исходными текстами. Кроме самого приложения TeamSource, поставлялись и исходные коды его модулей расширения, а также API для их создания. Все это позволяло досконально изучить устройство продукта с тем, чтобы максимально полно использовать его возможности при создании собственных дополнений к TeamSource.

Но TeamSource, как и некоторые другие свои проекты, компания Borland успешно похоронила. Его даже нет в списке на странице "Products and Solutions" их корпоративного сайта. Теперь там предлагается Borland StarTeam - SCM-система для управления жизненным циклом программного продукта, которая включает в себя и функции VCS. Она перешла компании Borland по наследству от Starbase Corporation, которую Borland купила конце 2002 года. На сайте Borland Developer Network открыт даже специальный раздел по StarTeam, а 12 марта 2003 года были выложены эксперты для его интеграции с IDE Delphi 6-7 и C++Builder 6 (http://bdn.borland.com/article/0,1410,29831,00.html).

Совершенно очевидно, что если клиентское обеспечение системы контроля версий будет интегрировано в среду разработки, то это сделает использование VCS максимально удобным для разработчика. Проблема, однако, заключается в том, что все системы контроля версий имеют собственный независимый клиентский API для взаимодействия с сервером. Разумеется, производители VCS не имеют возможности создавать инструменты для интеграции своего обеспечения со всеми существующими средами разработки. Практика показывает, что обычно они интегрируются с такими продуктами, как MS Visual C++, MS Visual Basic, но не с Borland Delphi. Интеграция систем контроля версий с продуктами Microsoft стала возможна по причине публикации корпорацией Microsoft специального стандарта: Microsoft Common Source Code Control API, сокращенно MS SCC API. Поддержка SCC API встроена во все среды разработки Microsoft и поддерживается многими производителями систем контроля версий (см. таблицу 1). Если они хотят, чтобы их система была доступна из продуктов Microsoft, то им достаточно только реализовать специальный объект - SCC-Provider, который является связующим звеном между средой разработки и системой контроля версий.

Система контроля версийПроизводительАдрес сайта
CS-RCSComponent Softwarehttp://www.componentsoftware.com/csrcs
CVS with CVSProxy plugin http://www.cvsnt.org,
http://www.jalindi.com/igloo
VisualAge TeamConnectionIBMhttp://www.software.ibm.com/ad/teamcon
Visual SourceSafeMicrosofthttp://msdn.microsoft.com/ssafe
Source IntegrityMKShttp://www.mks.com
P4 Version Control SystemPerforcehttp://www.perforce.com
PVCS Versions ManagerMeranthttp://www.merant.com
QVCSQuma Softwarehttp://www.qumasoft.com
Rational ClearCaseRationalhttp://www.rational.com/products/clearcase
Starbase Versions (StarTeam)Borland (ранее Starbase)http://www.starbase.com,
http://www.borland.com/starteam
Team CoherenceQSChttp://www.qsc.co.uk
CM Synergy (Continuus)Telelogichttp://www.continuus.com
AllChangeIntasofthttp://www.intasoft.net
Code Co-opReliable Softwarehttp://www.relisoft.com
SourceOffSiteSourceGear Corporationhttp://www.sourcegear.com
Seapine Surround SCMSeapine Softwarehttp://www.seapine.com
AllFusion Harvest Change ManagerComputer Associateshttp://support.ca.com/harvest_supp.html
Таблица 1. Список систем контроля версий, реализующих SCC API.

SCC API является универсальным способом интеграции систем контроля версий в среду разработки, но по неизвестным мне причинам среды разработки от Borland не поддерживают SCC API (за исключением Borland JBuilder Enterprise Edition). В то же время система Borland StarTeam для интеграции в сторонние продукты кроме StarTeam SDK предоставляет и поддержку SCC API. К сожалению Borland почти не использует SCC API, что является существенным минусом их RAD-средств, работающих под Windows.

Как я писал выше, в своей работе мы использовали TeamWindows. Новая версия основного продукта нашей организации разрабатывалась уже на MS Visual C++, поэтому все (в том числе и те, кто использует Delphi) дружно перешли на Microsoft Visual SourceSafe (MS VSS) - систему контроля версий от Microsoft. Мы, кто пишет на Delphi, завидовали тем, кто имел возможность работать с VSS из среды Visual C++. Нам же по каждому поводу приходилось запускать VSS вне среды разработки. Сопоставив то, что есть стандарт для работы с VCS и Delphi сама по себе не имеет средств сопряжения с этим стандартом, но в тоже время Open Tools API позволяет безгранично расширять возможности ее IDE, напрашивается вывод, что должны быть средства третьих фирм выполняющие эту работу (их мы и собираемся рассмотреть). Через некоторое время в интернете было найдено спасительное для нас решение – VssConneXion. VssConneXion – это эксперт [3] от EPocalipse Software, который позволяет интегрировать MS VSS в IDE Delphi (изначально он назывался EPocalispe VssDelphi). С моей точки зрения, благодаря этому эксперту использовать VSS в Delphi даже удобнее, чем в MS Visual Studio. VssConneXion позволил нам "одним кликом" выполнять все функции по работе с VSS.

Недавно мы задумались о переходе на Delphi 7. С переходом на новую версию Delphi пришлось искать и VssConneXion под Delphi 7. Зная, что есть и другие эксперты для работы с системами контроля версий, я решил ознакомиться с другими разработками в этой области. Как оказалось, их не так уж и много: EPocalipse Software (разработчик VssConneXion) выпустила еще два подобных продукта - SourceConneXion и SourceConneXion+; компания Devrace (наши бывшие соотечественники по СССР) выпустила Athlant. В дополнение к этому поиск на просторах интернета "принес" еще три продукта для работы из Delphi с системами контроля версий: CdSccExpert, Visual SourceSafe Expert и AIDE2000 Services for Delphi.

Итак, на рассмотрении оказалось семь экспертов для работы с системами контроля версий из IDE Delphi. Но их количество резко сократилось после первого же ознакомления.

Visual SourceSafe Expert можно отбросить сразу же по двум причинам. Во-первых, в нем реализованы только базовые функции (get/check out/check in/undo check out). Во-вторых, продукт не развивался с сентября 1998 года и доступен только для Delphi 3-5. Единственный его плюс – это бесплатность. Хотя еще маленький плюсик можно было бы добавить по той причине, что его разработчики - русские и, с ними можно было бы общаться на родном языке.

AIDE2000 Services for Delphi тоже можно не рассматривать. Это набор экспертов для Delphi, среди которых есть и эксперт для работы с MS Visual SourceSafe. Вот цитата из его описания на сайте разработчиков: "AIDE2000 Services for Delphi - Delphi эксперт, осуществляющий интеграцию Microsoft Visual SourceSafe в Delphi IDE (совместим почти со всеми версиями SourceSafe). AIDE выполняет другие полезные операции при работе с исходным кодом в Delphi IDE, например: гипер прыжки, усовершенствованная кодовая навигация, окончание класса, шаблоны кода и т.п. Также доступен общий язык скрипта (Forth диалект) для автоматизации Delphi IDE." (сохранен авторский текст). Как и предыдущий продукт, он разработан нашими соотечественниками, давно "заброшен" (с ноября 1999 года) и работает только с Delphi 3-5. И хотя функций в этом эксперте немного больше, но все равно до коммерческого варианта он явно не дотягивает. В нем не хватает ряда основных функций, например таких, как просмотр истории изменения файла или сравнение версий файла с визуальным отображением изменений. Интеграция с IDE у него тоже хромает (меню в главном меню IDE - на сегодняшний день это маловато (см. пункты 42-52 таблицы 2)). И лучше бы разработчики разделили AIDE2000 Services на две части. В одну можно было бы выделить эксперт для работы с MS VSS, а в другую - "другие полезные операции", т.к. функции этих экспертов друг друга не дополняют и они логически являются различными продуктами. Даже предоставление "скидки гражданам бывшего СССР" не убеждает в необходимости выбора этого продукта.

SourceConneXion и SourceConneXion+ являются логическим продолжением VssConneXion и работают не только с MS Visual SourceSafe, но и со всеми SCCAPI-совместимые системами контроля версий. По функциональным возможностям эти два эксперта оказались примерно одинаковыми, единственное их отличие - это отсутствие у SourceConneXion возможности работать с MS Visual SourceSafe. Поэтому, если не учитывать разницу в цене, то их можно рассматривать как один продукт.

В результате для более детального рассмотрения остались не семь продуктов, а четыре: CdSccExpert, Devrace Athlant, Epocalipse SourceConneXion и Epocalipse VssConneXion. Ниже приведена подробная таблица сравнения известных мне экспертов для интеграции систем контроля версий с IDE Delphi (таблица 2) и небольшое их сравнение.

Параметр Athlant CdSccExpert SourceConneXion/ SourceConneXion+ VssConneXion Visual SourceSafe Expert AIDE2000 Services for Delphi
1 Разработчик Devrace Chris Dickerson Epocalipse Software CIEC IT Laboratory ООО Элекс
2 Адрес (в ячейках "URL" написано для уменьшения ширины колонки) URL URL URL URL URL URL
3 Выход первой версии ноябрь 2001 ноябрь 2001 май 2002 1997    
4 Выпуск текущей версии май 2003 апрель 2003 ноябрь 2002 март 2003 сентябрь 1998 ноябрь 1999
5 Текущая версия 2.0.4 0.9.6.0 1.1.0.23 2.2.0.10 1.3 4.54
6 IDE D5-7, BCB5-6 D5-7, BCB5-6 D5-7, BCB5-6 D5-7, BCB5-6 [4] D3-5 D3-5
7 Цена на 1-ну лицензию, $ 69/120 [5] Бесплатно 49.95/69.95 [6] 59.95 [7] Бесплатно (исходники 35 или 50) 25
8 Цена на unlimited-лицензию, $ 463/815 [5] 400/800 [6] 800
9 Специальная цена для ex-СССР [8]         *
10 Системы контроля версий Любые SCCAPI-совместимые Любые SCCAPI-совместимые Любые SCCAPI-совместимые [9] MS VSS [10] MS VSS [10] MS VSS [10]
11 Наличие инсталлятора *   * *    
12 Создание нового проекта в VCS *   * *   *
13 Добавление/удаление файлов проекта в VCS * * * *   *
14 Добавление/удаление файлов не входящих в проект в VCS *   * *   *
15 get/check out/check in/undo check out файлов * * * * * *
16 Автоматическое предложение добавить файл в VCS при добавлении его в проект     * *    
17 Check out файла при его открытии в IDE / check in файла при его закрытии *          
18 Check out файла при его редактировании *   * *    
19 После check in контролы на формах и сам Object Inspector переходят в состояние disable     * *    
20 Синхронизация файлов проекта в IDE и VCS *   * *    
21 Автоматическая синхронизация файлов при открытии/закрытии проекта в IDE     * *    
22 Синхронизация всех проектов из IDE Project Manager одной командой       *    
23 Share files *   * *    
24 Просмотр истории изменения файла * * * *    
25 Сравнение версий файла с визуальным отображением изменений * * * *    
26 Подсветка синтаксиса Delphi/C++ при сравнении файлов       *    
27 Группы файлов [11] *   * *    
28 Фильтр запрещающий добавить в VCS файлы с заданным расширением     * *    
29 Фильтр позволяющий при check in не устанавливать флаг read-only для файлов с заданным расширением     * *    
30 Работа с удаленными из VCS файлами       *    
31 Просмотр свойств файла в VCS * * *      
32 Просмотр параметров VCS *   *      
33 Поддержка локализации *          
34 Автоматическое обновление через internet     * *    
35 Встроенный VCS Explorer [12] [12] [12] * * *
36 Работа с VCS из VCS Explorer * * * *   *
37 Открытие файлов Delphi из VCS Explorer в IDE *   *      
38 Открытие файлов не Delphi из VCS Explorer в других программах (в зависимости от расширения файла)     *      
39 Компиляция проекта из VCS Explorer *          
40 Просмотр в VCS Explorer древовидной структуры проекта [13]     * *    
41 Фильтр на просматриваемые в VCS Explorer файлы *   *      
Интеграция в IDE
42 Toolbar *   * *    
43 Меню в главном меню IDE * * * * * *
44 Меню в pop-up меню CodeEditor *   * *    
45 Меню в pop-up меню IDE Project Manager *   * *    
46 Меню в CodeEditor toolbar *          
47 Меню в CodeEditor statusbar     * *    
48 Меню в pop-up меню дизайнера форм *          
49 Интеграция с TO-DO List *     *    
50 Операция над файлами всего проекта из главного меню IDE * * * *   *
51 Операция над файлами всего проекта из pop-up меню IDE Project Manager *          
52 Настройка горячих клавиш * * * *    
Таблица 2. Сравнение экспертов для интеграции VCS с IDE Delphi

Начнем с CdSccExpert. Этот эксперт распространяется бесплатно (без исходных текстов из-за NDA от Microsoft [14]) и, в отличие от остальных, не находится под покровительством какой-нибудь фирмы. Работает CdSccExpert со всеми SCCAPI-совместимыми системами контроля версий (протестирован с MS VSS 6, SourceGear SourceOffSite, Quma Software QVCS 3.6, Merant PVCS и StarTeam). По количеству функций этот продукт выходит на уровень своих коммерческих конкурентов. Основными недостатками является не возможность добавления/удаления файлов не входящих в проект в VCS, share files и синхронизации файлов проекта в IDE и VCS. Бросается в глаза отсутствие ряда функций сказывающихся на удобстве работы (например, группы файлов) и слабая интеграция в IDE (см. пункты 42-52 таблицы 2). Существенным недостатком встроенного VCS Explorer’а является возможность просматривать в VCS только текущий проект. В одном архиве с CdSccExpert лежит дополнительная утилита SCCAPI Testing Applet, которая позволяет получить список установленных на компьютере SCC- провайдеров и проверить их работоспособность. CdSccExpert является интенсивно развивающимся продуктом, по крайней мере "баги" правятся в нем регулярно и обновления выпускаются каждый месяц (иногда и по три раза в месяц).

Рассмотрим продукты Epocalipse Software. По своим функциям, дизайну большинства диалогов и удобству использования SourceConneXion и VssConneXion идентичны. Различия лишь в том, что VssConneXion для доступа к VCS использует SourceSafe API и работает только с MS VSS, а SourceConneXion универсален, т.к. работает через SCC API. Использование SCC API накладывает ряд ограничений на реализацию некоторых функций эксперта. Поэтому если Вам нужно работать только с MS VSS, то смело выбирайте VssConneXion (это рекомендует и сама компания Epocalipse Software). Использование SourceSafe API дает возможность разработчику эксперта сделать не только более удобные диалоги, но и реализовать ряд мелких, но приятных возможностей:

  1. Подсветки синтаксиса Delphi/C++ при сравнении двух файлов;
  2. Подключения любых утилит для сравнения содержимого двух файлов (для замены встроенного Difference viewer);
  3. Создания меню ("compare to") в котором отображается список из пяти последних версий файла, что позволяет упростить и ускорить процесс выбора версии файла для сравнения;
  4. Изменения "working directory" проекта в VCS;
  5. Безвозвратного удаления или восстановления удаленных из VSS файлов;
  6. Работать в VCS Explorer не только с текущим проектом, но и со всей базой VSS.

Кроме этого, в VssConneXion есть такие интересные возможности, как "Sinchronize All Projects" и интеграция с TO-DO List. Sinchronize All Projects - это синхронизация всех проектов, собранных в группу в Delphi Project Manager (очень удобно, если у Вас есть несколько связанных проектов, и Вы одновременно с ними работаете). Интеграция VssConneXion с TO-DO List позволяет, хранить комментарии к команде "check in" (эти строки относятся к категории "Check In Comment"). Единственным преимуществом, которое мне удалось найти у SourceConneXion, – это наличие фильтра файлов в VCS Explorer, позволяющего разделить просматриваемый список файлов на категории (контролируемые VCS, не контролируемые VCS, и checked out). В то же время VssConneXion позволяет открыть из VCS Explorer выбранный файл в IDE (для файлов Delphi) или в программе зарегистрированной в Windows для данного расширения.

Еще у VssConneXion есть одна интересная, но почти бесполезная, функция, которая отсутствует у других подобных экспертов – из диалога "About…" можно посмотреть статистику произведенных операций над файлами (check out, check in, get latest, file difference, history и auto check out). Эта информация красиво отображается в виде разноцветной диаграммы.

А теперь взглянем на Devrace Athlant. По функциональным возможностям этот эксперт можно сравнить с SourceConneXion, т.к. они оба работают через SCC API и потому являются продуктами одного класса. Что касается сравнения с VssConneXion, то на Athlant наложены те же ограничения, что и на SourceConneXion.

Большого различия в Athlant и SourceConneXion нет. Все их возможности "завязаны" на SCC API и иногда отличаются из-за различного представления авторов, о том как "это" нужно сделать (например, операции над файлами всего проекта в Athlant делаются из pop-up меню IDE Project Manager, а в SourceConneXion из меню в главном меню IDE). По работе с файлами хотелось бы выделить несколько моментов. У SourceConneXion есть автоматическая синхронизация файлов при открытии/закрытии проекта в IDE (очень удобно, например, не забудешь проект в VCS положить) и перевод после check in контролов на формах и самого Object Inspector в состояние disable (тоже очень удобно и наглядно). За то у Athlant есть возможность делать check out файла при его открытии в IDE и check in при его закрытии. Как и VssConneXion, Athlant может работать с TO-DO List для задания комментария к команде "check in". Только реализовано это по-другому, Athlant не хранит комментарии в TO-DO List, а позволяет выбрать его из TO-DO List (при этом выбранное из TO-DO List задание можно сразу пометить как выполненное).

Отдельно хочется отметить VCS Explorer (он называется Athlant Manager). В отличие от других экспертов он имеет свойство "dockable" и поэтому может быть "приклеен" к любому из окон IDE Delphi. Он имеет более мощный фильтр, чем Project Explorer у SourceConneXion (категория "checked out" делится на две "checked out текущим пользователем" и "checked out другими пользователями"). В дополнение к этому есть специальная папка "Favorites" для ускорения доступа к группе наиболее используемых файлов. И вообще, при работе с одним проектом Athlant Manager может заменить стандартный Project Manager из IDE Delphi. Для этого он, кроме функций работы с VCS, имеет еще кнопки добавления/удаления файлов в проект и кнопку компиляции проекта. Но в то же время у Athlant Manager есть два недостатка. Во-первых, в нем нет меню (только toolbar), а это неудобно тем, кто привык пользоваться меню. Во-вторых, он не позволяет просмотреть древовидную структуру проекта в VCS или на локальном диске.

Еще одна существенная деталь отличающая Athlant от подобных продуктов - это наличие в Professional-версии дополнительной программы - Athlant Server. Athlant Server необходим при совместной работе нескольких пользователей над одним проектом. Он позволяет в любой момент времени знать реальное состояние всех файлов в Athlant Manager, если файлы обрабатываются другими пользователями в сети. Кроме этого, Athlant Server содержит встроенную систему обмена сообщениями, которая позволяет общаться с другими пользователями Athlant прямо из IDE.

В комплекте с Athlant поставляются две дополнительные утилиты SCC Providers Test и AthlantDiff (их можно бесплатно скачать с сайта компании Devrace как отдельные программы). SCC Providers Test позволяет получить список установленных на компьютере SCC-провайдеров. AthlantDiff позволяет сравнить содержимое двух текстовых файлов в 16-ти форматах (Object Pascal (*.pas, *.dpr, *.dpk), SQL (*.sql, *.ddl), Delphi Text Forms (*.dfm), C++ (*.cpp; *.h, *.hpp, *.c, *.bpr), Inno Setup files (*.iss), INI files (*.ini), Assembler files (*.asm), HTML files (*.html, *.htm), XML files (*.xml), Visual Basic Script (*.vbs), Visual Basic (*.vb), Java Script (*.js), Java files (*.java), PHP scripts (*.php), PERL scripts (*.pl, *.pm) и IDL files (*.idl)).

Как я уже писал, компания Devrace основана нашими земляками. Это дает несколько плюсов:

Хотелось бы отметить еще один момент. На одном из компьютеров, где проводилось тестирование экспертов для работы с системами контроля версий, VSS был установлен некорректно (не был зарегистрирован SCC-провайдер). Ни SCCAPI Testing Applet, ни SCC Providers Test его не обнаруживали. Как же повели себя "подопытные"? VssConneXion, Visual SourceSafe Expert и AIDE2000 Services for Delphi этого не заметили, т.к. они не нуждаются в SCC-провайдере. SourceConneXion+ не дал возможности подключиться к хранилищу (соответствующий пункт меню был заблокирован). CdSccExpert опечалил еще больше - при запуске он "упал" и "выбросил белый флаг" с надписью "Access Violation". Достойно, среди экспертов использующих SCC-провайдер, себя повел только Athlant, он почти полностью работал (за исключением того, что после закрытия Delphi не запоминался путь к выбранному в VCS проекту и нельзя было посмотреть свойства SCC-провайдера).

Когда написание статьи подошло к концу, компания Devrace выпустила первую публичную бета версию Athlant 3. Как заявлено в пресс-релизе по этому поводу "эта новая и значительно улучшенная версия". Список новшеств и исправлений действительно впечатляет. Остановимся на новшествах, они позволяют поставить плюс во многие ячейки таблицы сравнения:

  1. Добавлены операции для работы с целым проектом из главного меню.
  2. Добавлена опциональная возможность автоматической синхронизации проекта при его закрытии.
  3. Добавлена блокировка контролов на формах, для not Checked Out файлов (функция включена в бета-версию, но еще нуждается в доработках).
  4. Добавлена опция мониторинга изменений файлов и форм. Теперь Athlant предложит Вам сделать операцию Check Out для заблокированных файлов, которые Вы пытаетесь редактировать.
  5. Добавлена возможность подключения пользовательских меню в основное меню Athlant. Это позволяет добавлять в эксперт специфические функции, которые не поддерживаются стандартом SCC.
  6. Пример: Создаем меню "ClearCase Rebase". Команда: "cleartool.exe rebase -graphical". Команда Rebase не поддерживается SCC API, однако теперь Вы можете дополнить основное меню Athlant такой функцией.

    Пользовательские меню поддерживают макросы, которые помогут Вам настроить параметры Ваших команд меню: CUR_FILE_DIR - каталог, в котором лежит текущий файл; CUR_FILE - путь к текущему файлу; SHORT_FILE - краткое имя текущего файла; CUR_FILES - список путей к выбранным файлам; SHORT_FILES - короткие имена выбранных файлов; PROJ_DIR - путь к текущему каталогу проекта; PROJ_FILE - путь к основному файлу проекта; PROJ_SHORT_FILE - короткое имя основного файла проекта; PROJ_FILES - список путей ко всем файлам проекта; PROJ_SHORT_FILES - список коротких имен всех файлов проекта.

  7. Добавлена возможность для конкретного типа файлов (по расширению) задать редактор, который вызывается из Athlant Manager при открытии файла.
  8. В Athlant Manager добавлен просмотр древовидной структуры проекта.
  9. Добавлена возможность вставки шаблонов VCS в заголовок юнита.
  10. Смена активного проекта в группе при переключении закладок в редакторе с юнитами (т.к. VCS -функции доступны только для текущего проекта).
Кроме этого, по словам Андрея Семака (автора Athlant), в третьей версии будет полностью переписан Athlant Server. Это позволит добиться более стабильной его работы и избежать некоторых проблем при настройке безопасности для работы с DCOM.

Мы являемся свидетелями разгоревшейся конкурентной борьбы между Athlant и SourceConneXion. Отслеживая историю их развития, можно заметить, что оба продукта постоянно улучшаются за счет того, что "берут" друг у друга идеи. Вот и получается, что эти два эксперта различных производителей предоставляют почти одинаковые возможности, да еще и по почти одинаковой цене! Далее все идет по законам рынка, там, где невозможно победить конкурента функциональными возможностями, нужно давить маркетингом. Например, я заметил очередной маркетинговый шаг EPocalipse Software. Как Вы думаете, какой результат выдаст популярнейший поисковый сервер http://www.google.com при поиске по слову "athlant"? Учтите то, что в английском языке слова "Athlant" нет. Если Вы думаете, что http://www.athlant.com, то Вы ошибаетесь! Google первой строчкой напишет "Version Control in Delphi - Use any source control produdct directly from the Delphi IDE" со ссылкой на www.epocalipse.com (рекламную ссылку конкурента). Devrace же выглядит по-джентльменски, например, недавно они расширили сферу применения своего продукта – в дополнение к Athlant под Delphi и C++Builder была выпущена бесплатная версия под ModelMaker. К тому же Devrace постоянно развивает свой эксперт, находя свежие идеи. Например, подключение пользовательских меню, что является очень интересной доработкой, существенно расширившей возможности Athlant (думаю, что появление такой возможности в SourceConneXion не заставит себя ждать).

Вот вроде бы и все. Выводы и рекомендации напрашиваются сами. Главный вывод: если Вы работаете с системой контроля версий и при этом не используете эксперт для ее интеграции в IDE, то Вам срочно нужно позаботится об улучшении условий своего труда и выбрать себе нужный эксперт!

Что же я могу порекомендовать? Если Вы не хотите тратить деньги и для Вас параметр "free of charge" является определяющим, то мой совет - взять CdSccExpert. Он бесплатный, в нем реализованы все основные функции для работы с VCS. Со временем и при желании Вы сможете перейти на более удобный и мощный коммерческий продукт. Что же выбрать из коммерческих экспертов? Здесь все зависит от того, какую систему контроля версий Вы используете. Если Вы используете MS Visual SourceSafe, и в будущем не планируете использовать еще какую-то систему, то ответ – VssConneXion. За счет использования SourceSafe API, автор этого эксперта имеет больше свободы в реализации некоторых функций и поэтому VssConneXion более удобен в работе. Если же Вы работаете не только с MS VSS, но и с другими системами контроля версий, поддерживающими SCC API (см. таблицу 1), то я бы порекомендовал дождаться выпуска Athlant 3 (именно третью версию, т.к. эта версия имеет большое число новых функций и исправленных ошибок по сравнению с предыдущей версией). По сравнению со своим основным конкурентом (SourceConneXion) этот эксперт обладает большими возможностями и более интегрирован в IDE (а значит, его удобнее использовать). Да и не следует забывать про несравнимо малую цену для ex-СССР!

Дополнение

Данная статья была написана в мае-июне и в июле опубликована в Московском журнале Технология Клиент-Сервер 2003'2. Теперь, в конце сентября, я выкладываю ее на Delphi Plus. Рассмотрим, что происходило за это время на рынке экспертов для интеграции VCS в Delphi.

19 июня - компания Devrace выпускает Athlant 3 Release Candidate 1. Главным новшеством этой версии является то, что поддержка коммуникативных функций интегрирована в эксперт и больше Athlant Server не нужен. Более подробно, об этой версии пожно почитать в опубликованном по этому поводу пресс-релизе.

10 июля - Eyal Post (автор VssConneXion) объявил о том, что готовится к релизу VssConneXion версии 3.0. Желающие участвовать в бета-тестировании должны подать заявку по e-mail.

24 июля - компания EPocalipse Software для бета-тестеров выложена бета-версию VssConneXion 3.0 и сообщила пароль закрытой конференции для ее обсуждения.

9 сентября - компания EPocalipse Software, после полуторамесячного тестирования, выпустила первую публичную бета-версию VssConneXion 3.0.

16 сентября - редакция сайта DownloadBlast.com присваивает Devrace Athlant рейтинг Good Choice.

19 сентября - компания EPocalipse Software выпустила VssConneXion 3.0 Release Candidate 1.

24 сентября - компания EPocalipse Software выпустила VssConneXion 3.0 Release Candidate 2.

По неофициальным данным, Андрей Семак (автор Athlant) летом тоже не дремал, а работал над следующей версией Athlant. В этой версии будет полноценная поддержка групп проектов, значительно улучшен механизм и скорость работы с Athlant Manager. Планируется, что Athlant Manager возьмет на себя все функции стандартного Project Manager. Так, что в начале октября можно ожидать выпуск Athlant 3 Release Candidate 2 (осталось разобраться с парой непрятных багов появляющихся под C++Builder).

А теперь подробнее о том, что ждет пользователя в третьей версии VssConneXion:

Выпуск VssConneXion 3.0 укрепил мое мнение в том, что если Вы работаете с MS VSS, то VssConneXion - это лучший выбор. Правда есть две маленькие неприятности. Первая, для тех, кто является зарегистрированным пользователем - переход со 2-й на 3-ю версию будет платным (30$), а вторая, для тех кто, пользовался не лицензионной версией - способ защиты изменился (хотя товарищ снес бету VssConneXion, почистил реестр, поставил ее снова и получил очередные 30 дней триала).

Теперь, до появления более совершенных продуктов в этой области, все новости о Athlant (как лучший выбор для работы с VCS через MS SCC API) и VssConneXion (как лучший выбор для работы с MS VSS) будут помечаться знаком Рекомендовано DelphiPlus (Рекомендовано DelphiPlus).

Дополнение №2

После публикации статьи на DelphiPlus мне пришло письмо от Михаила Власова, в котором, он сообщил, что я не рассмотрел "его маленькую, но удобную библиотеку VssAddon - для интеграции Delphi и MS Visual SourceSafe", которую их фирма использует уже более десяти лет. Так получилось, что в интернете я ее не нашел, поэтому в статье не рассмотрел. Сходив на персональный сайт Михаила Власова, я нашел ее в разделе Софт под названием "MV VSS - примочка к Deplhi для интеграции оного с Microsoft SourceSafe".

Скачанный с сайта архив содержит исходные тексты (дата изменения с 12.03.1999 по 27.07.2000). Package VssPk последний раз компилировался на Delphi 5 (т.к. включает в себя vcl50 и vclx50), но он без проблем установился и заработал под Delphi 7. После его установки в главном меню IDE появился пункт меню "ZSS". Вот что позволяет сделать данный эксперт:

  1. Выбрать базу VSS.
  2. Выбрать из нее проект. Тут возникла маленькая проблема. В диалоге настройки я несколько раз пытался это сделать, но ни как не получалось. Я нажимал кнопку Browse и Delphi зависала. Два раза я убивал ее как задачу, а потом решил подождать. Я переключился на другую задачу и, через некоторое время, вернулся к Delphi - она ожила, но на экране висел все тот же диалог настроек безо всяких изменений. Через несколько попыток, получилось так, что я нажал Browse и взглянул на распечатку схемы (поэтому Delphi не трогал), вот тогда и удалось увидеть список проектов. Как оказалось, в ListBox вычитывалась вся структура базы VSS (у меня это заняло около минуты), плюс к этому он очень легко прячется (например, при потере фокуса).
  3. Сделать CheckOut/CheckIn файла загруженного в CodeEditor.

Результаты ознакомления с MV VSS показывают, что он обладает минимальными функциональными возможностями и занимает последнее место среди рассмотренных мной экспертов по возможностям и удобству использования.

И еще пара слов, о том, что происходило на рынке экспертов для интеграции VCS в Delphi после публикации статьи на DelphiPlus:
8 октября - компания EPocalipse Software выпустила релиз VssConneXion 3.0.
9 октября - с компанией EPocalipse Software достигнуто соглашение о предоставлении посетителям DelphiPlus скидки в 50% на VssConneXion. Для получения скидки необходимо написать на английском языке письмо на адрес sales@epocalipse.com.

Примечания.

  1. Open Tools API – это набор классов, которые обеспечивают контроль над средой разработки "из вне" и доступ ко всей информации о текущем проекте. Они позволяют произвести интеграцию IDE Delphi со средствами третьих фирм, таких как систем контроля версий, CASE-средств и т.д. С каждой версией Open Tools API расширяется с целью увеличить уровень интеграции в отношении работы с файлами проекта, редактором, меню и др. элементами IDE.
  2. На сегодняшний день FreeVCS работает с Delphi 4-7 и входит в Project JEDI (http://www.delphi-jedi.org) под названием JediVCS (http://jedivcs.sourceforge.net) с изменением лицензии с Freeware на Open Source.
  3. Программный продукт, расширяющий возможности IDE Delphi и интегрирующийся с ним с помощью Open Tools API, обычно называют экспертом.
  4. VssConneXion версии 1.4 работает под Delphi 3,4 и C++Builder 3,4.
  5. Цена на версию Personal/ Professional.
  6. Цена на версию SourceConneXion / SourceConneXion+.
  7. VssConneXion версии 1.4 для Delphi 3,4 и C++Builder 3,4 стоит 20$ за лицензию и не может быть обновлен до новой версии.
  8. Цена за одну лицензию для физического лица 150-300 руб. (5-10$), для юридического лица 432-780 (14-26$) и зависит от количества приобретаемых лицензий (подробнее см. Магазин Devrace).
  9. SourceConneXion не работает с MS VSS, а SourceConneXion+ работает (это их единственное различие).
  10. Для доступа к хранилищу используется SourceSafe API.
  11. Группы файлов позволяют связать файлы с одним именем, но разными расширениями. Это нужно для того, что бы, выбрав один файл, можно было выполнить операцию над всей группой (например, всегда делать check out вместе для pas и dfm).
  12. Только текущий проект.
  13. Редко проект представляет собой один каталог с файлами, чаще всего это древовидная структура из нескольких каталогов (например, каталог программы, а в нем несколько подкаталогов с исходными текстами подключаемых к ней модулей).
  14. NDA (Non-Disclose Agreement) – в данном случае, это соглашение о не распространении информации о работе с SCC API (сама информация выдается бесплатно, но для ее получения необходимо пройти регистрацию и решить множество бюрократических вопросов).
  15. Каталог систем контроля версий http://dmoz.org/Computers/Software/Configuration_Management/Tools.

Литература.

Copyright© 2003 Голубовский Андрей, опубликована в журнале Технология Клиент-Сервер 2003'2