Совместное использование кодов при помощи Платформы Eclipse

Эта статья предлагает обзор того, как Платформа Eclipse поддерживает управление версиями исходного кода в программном проекте. Мы начнем с краткого обсуждения идей командной разработки кода, а затем посмотрим, как Eclipse работает с репозиториями кода CVS. Мы также немного рассмотрим программные инструменты управления исходным кодом, которые поддерживаются через подключаемые модули Eclipse.

Совместное использование кодов в командном проекте

Большинство современных приложений разрабатываются командами людей. Даже маленькие проекты, в которых участвуют всего несколько человек, требуют плотного контроля изменений в исходном коде. Это задача для программного обеспечения управления кодом. Основные функции, обеспечиваемые программным обеспечением управления исходным кодом:

  • Способ координирования и интеграции изменений в исходном коде;
  • История работы, проводимой командой.

Когда члены команды делают новую работу, они делают ее совместно используемой за счет сохранения изменений в репозитории. Аналогично, когда они хотят получить последнюю версию проекта, они обновляют свои локальные рабочие пространства изменениями из репозитория. Это означает, что репозиторий постоянно меняется по мере того, как члены команды присылают свои изменения. Другими словами, репозиторий должен представлять текущее состояние проекта. В любой момент члены команды могут обновить свои рабочие пространства из репозитория и знать, что они имеют актуальные данные.

Сопровождение истории также важно, так как вы можете сравнить текущее состояние проекта с предыдущими версиями и, если необходимо, вернуться к более ранним версиям. Координирование работы команды таким образом, чтобы существовало только одно определение текущего состояния проекта и интеграция работы команды также существенны для ведения контроля версий. Такая координация, возможно, наиболее труднодостижима.

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

Как Платформа Eclipse поддерживает управление кодом

Платформа Eclipse предлагает возможность совместного использования кода и работы над программным проектом в команде. Eclipse поддерживает широкий спектр решений по управлению кодом, благодаря его архитектуре подключений (однако, поддержка CVS привносится извне). Центральной точкой архитектуры Платформы Eclipse является рабочее пространство. Рабочее пространство поддерживает все, что необходимо для построения и тестирования программного проекта. Оно содержит объекты (исходный код и ресурсы). Оно также сохраняет конфигурационные установки для проекта, интегрированной среды разработки и подключений. Рабочее пространство локально поддерживается на машине разработчика, а команда сотрудничает через внешние репозитории, которые являются местом встречи для частей кода от разных разработчиков. Репозитории доступны за счет клиент-серверной архитектуры через Internet.

Платформа Eclipse предлагает поддержку операций командной разработки непосредственно из рабочего пространства. Эта поддержка позволяет разработчику параллельно взаимодействовать с несколькими раздельными репозиториями и версиями кода проектов. Ресурсы в рабочем пространстве позволяют компонентам поддержки команды работать с версиями и задачами управления конфигурацией. Конечно же, одно рабочее пространство может одновременно обращаться к разным типам репозиториев. Платформа Eclipse не обеспечивает собственного решения по управлению кодом; она всегда зависит от внешних систем. Платформа Eclipse имеет встроенную поддержку только для одной (но самой популярной) системы управления исходным кодом: Concurrent Versions System (CVS). Другие репозитории поддерживаются при помощи модулей расширения от третьих лиц, описанных в разделе Поддержка приложений управления кодом от третьих лиц.

Что такое CVS?

CVS начиналась как коллекция скриптов в 1986 г., но эволюционировала в самую популярное решение по управлению версиями исходного кода для разработчиков программного обеспечения. CVS является клиент-серверным решением с открытым кодом для работы с версиями, она доступна для разнообразных платформ, включая Linux и Windows NT/2000/XP. См. в разделе Ресурсы в конце статьи ссылки на источники загрузки клиентов, серверов и исходных кодов для CVS.

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

Для взаимодействия с CVS Eclipse имеет встроенного клиента CVS, глубоко интегрированного в среду разработки Платформы Eclipse, который реализован как отдельная перспектива (перспектива CVS Repository Exploring). Общие установки Eclipse для CVS находятся в Window -> Preferences window -> Team. После переключения в перспективу CVS Repository Exploring становятся доступны все операции (перейдите в меню Window -> Open Perspective -> Other -> CVS Repository Exploring - см. Рисунок 1 и Рисунок 2).

Рисунок 1. Переключение в перспективу CVS Repository Exploring
CVS Repository

Первым шагом является установка местоположения репозитория, которое определяет параметры соединения для выбранного сервера/репозитория CVS. Убедитесь, что используется соединение SSH (extssh).

Рисунок 2. Просмотр репозиториев CVS в перспективе CVS Repository Exploring
Browsing CVS repository

Рабочий поток исходного кода в Eclipse/CVS

В модели кооперации команды CVS члены команды делают всю свою работу на собственных рабочих местах, изолированных друг от друга. Со временем возникнет необходимость совместного использования наработок. Они делают это через репозитории CVS. Для поддержки многих направлений работы CVS использует модель ветвей, которые изолированы друг от друга, но все же остаются существенно взаимозависимыми. Ветви являются тем местом, где команда разработчиков совместно использует и интегрирует ведущуюся работу. Ветвь можно представить себе как совместно используемое рабочее место, которое обновляется членами команды, когда они делают изменения в исходном коде. Эта модель позволяет отдельным разработчикам работать в командном проекте CVS, используя их работу совместно с другими, делая изменения и обращаясь к работе других в процессе развития проекта.

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

Эти правила применимы не только к CVS: это общие правила для управления исходным кодом в командном проекте, независимо от того, какая версия управляющего программного обеспечения применяется. Ниже приводится пример рабочего потока, который использует встроенную в Eclipse поддержку CVS:

1. Начало командного проекта
Каждый новый, пустой проект Eclipse может быть совместно используемым через CVS (или любую другую поддерживаемую систему управления исходным кодом). Разработчики могут также совместно использовать уже существующий код, переместив его в репозиторий. Чтобы сделать это, используйте опцию Team -> Share Project, находящуюся в контекстном меню, которое отображается, когда вы щелкаете на главной папке проекта, как показано на Рисунке 3.

Рисунок 3. Совместное использование локального проекта при помощи репозитория CVS
sharing project

Другой вариант - создание нового проекта на рабочем месте импортированием кода из выбранной ветви репозитория CVS. Просто выберите подходящую ветвь (или HEAD), а затем выберите опцию "Checkout As Project" из контекстного меню перспективы CVS Repository Exploring, как показано на Рисунке 4.

Рисунок 4. Создание нового проекта из существующего репозитория CVS
new project

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

3. Синхронизация локальных изменений с репозиторием CVS
Если разработчик в проекте готов зафиксировать свою работу, первым его шагом является выполнение операции обновления. Она проверит все поступившие в репозиторий изменения и добавит их в локальное рабочее место разработчика. Это гарантирует, что разработчик знает изменения, которые могут повлиять на целостность того, что он собирается зафиксировать. Сравните локальную версию с кодом, хранящемся в репозитории, используя опцию Compare With... в контекстном меню проекта (см. Рисунок 5).

Рисунок 5. Сравнение локальной версии с репозиторием
local version

Следующим шагом является разрешение всех конфликтов, которые время от времени появляются, и попытка снова откомпилировать код. Если все работает, то выполняется операция фиксации при помощи опции Team -> Commit... из контекстного меню проекта, как показано на Рисунке 6. Она интегрирует все изменения в репозиторий.

Рисунок 6. Фиксация изменений в удаленном репозитории
committing changes

4. Управление репозиториями
CVS дает разработчикам изолировать изменения в отдельных линиях разработки, называемых ветвями. Когда разработчик изменяет файлы в ветви, эти изменения не появляются в главном стволе или в других ветвях. Эти ветви называют подверсиями или развилками кода. Позже перемещения изменений из ветви в другую ветвь (или в главный ствол) выполняются операцией слияния. Затем ревизии фиксируются. Этим изменения действительно копируются в другую ветвь. Eclipse делает легким перемещение между ветвями при помощи опции Team -> Branch... из контекстного меню проекта.

Конечно, когда команда разработки поддерживает большой репозиторий, необходимо управлять операциями фиксации и слияния внутри проектов. Интеграция Eclipse/CVS предлагает специальную перспективу: CVS Repository History (см. Рисунок 7). Она дает быстрый обзор изменений в репозитории, выполненных членами команды.

Рисунок 7. Просмотр истории ревизий вместе с комментариями в окне CVS Resource History
revision history

Платформа Eclipse приходит с несколькими утилитами, которые поддерживают управление кодом. Наиболее полезна функция patch. Она сравнивает код из двух источников, таких как локальное рабочее место и репозиторий, и создает UNIX-подобный файл расхождений, содержащий различия в кодах (см. Рисунок 8). Этот файл может быть разослан разработчикам для изменения исходного кода в новейшей версии.

Рисунок 8. Создание файла расхождений для распространения исходного кода
source code distribution

5. Отсоединение проекта от CVS
Когда разработка проекта заканчивается, и команда хочет заморозить исходный код, финальная версия проекта может быть удалена из HEAD репозитория. Отсоединение проекта от CVS запрещает операции с репозиторием на проекте и его ресурсах и опционно удаляет информацию CVS, связанную с этим проектом.

Операции отсоединения могут быть выполнены опцией Team -> Disconnect из контекстного меню проекта. При выборе этой опции открывается диалог Confirm Disconnect from CVS. Если проект отсоединяется от репозитория, то команда должна решить, что делать с информацией CVS. Первым вариантом является "Delete the CVS meta information"; что запрещает меню командных операций CVS и удаляет папки CVS и их содержимое из файловой системы. Второй вариант - использовать "Do not delete the CVS meta information"; что запрещает меню командных операций CVS, но оставляет метаинформацию CVS.

Поддержка приложений управления кодом от третьих лиц

CVS имеет несколько критических ограничений: невозможно определить одновременные изменения в одном файле или через всю коллекцию файлов и невозможно определить логический конфликт между файлами. Она представляет конфликт, как чисто текстуальный, возникающей, когда двух изменений в одном файле почти достаточно, чтобы отменить команду слияния. CVS также не предлагает никаких инструментов взаимодействия в сотрудничестве, например, обмена сообщениями. К счастью, CVS - не единственное программное обеспечение для управления исходным кодом, которое поддерживает Платформа Eclipse. Разработчики могут расширять функциональность Платформы Eclipse при помощи подключений и сейчас (4 марта 2003 г.) имеется 16 подключений для программного обеспечения командной разработки. Все эти подключения были созданы сообществом Eclipse или производителями коммерческого программного обеспечения. Большинство из этих подключений добавляют поддержку для коммерческих систем управления исходным кодом от третьих лиц. Наиболее значимыми являются те подключения, которые поддерживают популярные корпоративные системы управления кодом, такие, как Merant PVCS и Rational ClearCase. Подключение CVS-SSH2, например, дает возможность обращения к CVS через сеанс SSH2, а подключение Microsoft Visual SourceSafe (VSS) team provider добавляет поддержку для продукта MS VSS (доступного также на не-Windows платформах, таких, как Linux).

Однако, персонально моим любимым подключением является Koi (см. ссылку в Ресурсы). Хотя оно не используется исключительно для контроля исходного кода, этот новый инструмент вносит много дополнительных действий в коллективную разработку. Текущая версия поддерживает обмен сообщениями между рабочими местами, совместно используемые маркеры, уведомления о конфликтующих изменениях, совместно используемый календарь и уведомления о событиях. Koi использует в качестве модели коммуникаций XML-RPC в его клиент-серверной архитектуре. Клиентами являются отдельные экземпляры Платформы Eclipse, которые связываются через "сервер сотрудничества ", который тоже является подключением Eclipse. Koi использует в качестве хранилища данных реляционную базу данных с доступом через JDBC.


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=2947