Глава 10 Конфигурационное управление с применением ClearCase Ветвление Глава 10 1 Цели • Изучив эту главу, Вы сможете: Понимать, как ClearCase действует при решении параллельных задач с использованием ветвлений Создавать типы ветвей и их экземпляры Использовать правило auto-make-branch конфигурационной спецификации Создавать Профайлы View Использовать Профайлы View при создании View для работы в Private-ветви. Глава 10 2 Преимущества Параллельной разработки • Позволяет различным проектам использовать одни и те же данные в одно и то же время. • Управление видом работы (public / private) • Изолированные изменения. • Пробные ветви (например, еще не протестированные возможности). • Постоянные ветви (например, bugfix в изолированном релизе) • Предотвращает задержки – разработка продолжается в период сборки. Глава 10 3 Работа с ветвями. Глава 10 4 Типы ветвей – Обзор •Пользовательский – определяется именем, сформированным как уникальное имя ветви в версионном дереве. Экземпляры типов ветвей могут и должны использоваться параллельно с различными элементами. Работает по принципу 2-х шагов 1. Объявляется тип, затем 2. Создается один или несколько экземпляров этого типа. •Примеры типов ветвей для использования параллельной разработки: Rel2_bugfix - исправление ошибок Johns_exp - индивидуальные эксперименты Wizard_features - разработка специальных свойств Глава 10 5 Почему тип? •Позволяет группировать логически несколько версий элемента Единая привязка в VOB. • Централизованный административный контроль имен ветвей Открытие и закрытие ветвей во время процесса разработки. \main \main \bugfix \pvt \bugfix bugfix Глава 10 10-6 6 Правила для типов ветвей •При задании имени типа ветви следуйте этим правилам: Имя не должно быть только числом. Имя может содержать буквы, цифры, подчеркивания, дефисы и точки. • Так как типы ветвей и типы меток могут использовать одни и те же имена, принято следующее соглашение: Типы ветвей используют имена нижнего регистра: rel2_bugfix Типы меток используют имена верхнего регистра: REL2 • При создании новой ветви, по умолчанию устанавливается одна ветвь на один элемент. Глава 10 7 Просмотр типов ветвей. • Используйте Type Explorer для создания типа, переименовывания, внесения изменеий и просмотра свойств типа ветви Глава 10 8 Объявление типа новой ветви. • Тип новой ветви может быть создан через Type Explorer Глава 10 9 Изменение ограничений • Панель Type Details в окне свойств типа ветви, позволяет изменять ограничения Глава 10 10 Создание экземпляра •После создания типа ветви, ее можно использовать с версиями элемента VOB с помощью: Оператора –mkbranch в config spec, что обеспечивается через: • Детальное редактирование config spec – добавление правил • Привязку View к Профайлу View • Задание View для использования Private-ветвей. Команды Cleartool mkbranch • Использование config spec, для автоматического создания ветви – лучший метод ветвления Глава 10 11 Оператор mkbranch •Оператор mkbranch в config spec выполняет автоматическое ветвление при checkout: Rule 1: element * Rule 2: element * Rule 3: element * checkedout \main\rel2_bugfix\LATEST REL2 -mkbranch rel2_bugfix •Правило 3 интерпретируется как: Выбор версии элемента с меткой REL2 С помощью checkout от версии с меткой REL2 автоматически создается ветвь rel2_bugfix •После выполнения операции mkbranch CO не выполняется, а происходит возврат в начало config spec и новый проход по правилам. Глава 10 12 Автоматическое создание ветви • Измените Ваш config spec для создания ветви, когда Вы совершаете element * checkedout операцию checkout element * \main\rel2_bugfix\LATEST над элементами с element * REL2 -mkbranch меткой REL2. rel2_bugfix • Правило config spec выбирает версию и указывает на точку ветвления после checkout. Глава 10 13 Автоматическое создание ветви • Извлеките версию файла • Теперь выбрана версия в состоянии CHECKEDOUT • Version Tree Browser покажет новую ветвь и CHECKEDOUT версию на ней Глава 10 14 Автоматическое создание ветви (продолжение) •Многоуровневое автоветвление Config spec может включать «каскад» операторов -mkbranch Rule 1: element * checkedout Rule 2: element * \main\rel2_bugfix404\LATEST Rule 3: element * \main\rel2_bugfix\LATEST -mkbranch bug_404 Rule 4: element * REL2 -mkbranch rel2_bugfix Ветви будут создаваться до тех пор, пока не будет достигнута нулевая версия, находящаяся на последней ветви из созданного каскада ветвей Глава 10 15 Многоуровневое автоветвление Глава 10 16 Параллельная разработка, использующая профайлы View. • Профайлы View могут быть использованы для автоматического ветвления: Руководитель проекта создает View-профайлы • View-профайл определяет интеграционную ветвь, baseline (или контрольную точку) и VOB-ы Разработчики связывают View-профайлы со своими View • Это обеспечивает им сonfig_spec с версий из baseline и возможность создавать при необходимости интеграционную ветвь Разработчики могут создавать Private-ветви, для изоляции своей работы Разработчики могут сливать результаты работы из Private-ветви в интеграционную ветвь Глава 10 17 View профайлы – цели. •View профайлы: Обеспечивают общие настройки конфигурации для всей команды разработчиков Автоматизирует задачи параллельной разработки Предоставляет специальную модель для эффективного использования ClearCase Позволяет разработчикам не вникать в детали Config spec и создания ветвей Глава 10 18 Компоненты View профайлов. •View-профайл содержит следующую информацию: Конфигурационную спецификацию, выбирающую подходящие версии для работы команды Список меток для контрольных точек, определяющих набор основных уровней развития проекта Список VOB, содержащих исходную информацию по проекту Административный VOB (если есть), используемый командой Глава 10 19 Создание View-профайлов • ClearCase обеспечивает программу, автоматизирующую создание нового Viewпрофайла Глава 10 20 Создание View-профайлов (продолжение) • Руководитель проекта устанавливает имена ветвей и меток Глава 10 21 Создание профайлов View - Config spec • Config spec имеет опцию автоветвления Глава 10 22 Использование профайлов View. •Project Leader использует View Profile Explorer для определения профайла •Члены команды связывают View с Viewпрофайлами • Пользователи обеспечены: Выбором правильной версии с помощью Config spec Автоматической активацией VOB при активации View Автоматическим обновлением Config spec View при обновлении профайла View Глава 10 23 Интеграционные и private ветви • Интеграционная ветвь служит для хранения общих изменений участников проекта • Private ветвь может создаваться и использоваться одним разработчиком для изоляции своих разработок hello.c внутри проекта \main Позволяет большую гибкость, \main _pvt чем общая работа на одной интегрированной ветви. Позволяет лучше координировать работы среди членов команды По окончанию работы в собственной ветви, результаты передаются в интеграционную ветвь Глава 10 \rel3 _enhance Private branch Integration branch 24 Привязка профайла View к существующему View. • Существующий View может быть привязан к View-профайлу Глава 10 25 Привязка View-профайла к новому View • В процессе создания View, View Creation Wizard позволяет выбрать View-профайл Глава 10 26 Использование View-профайла с Private ветвью • Если отмечена опция private branch на последнем шаге создания View, то: •Set Up a Private Branch Wizard предлагает ввести имя ветви и точку ветвления • Config spec View модифицируется для создания и выбора Private Branch Глава 10 27 Задание Private ветвей для View Укажите имя Private ветви и точки ветвления Выберите точку ветвления из выпадающего списка Глава 10 28 Создание Собственных ветвей Config spec • При создании private ветви конфигурация View изменяется автоматически • Работа во View происходит по принципу checkout-edit-checkin • Когда создание ветви закончено: Предлагается слить изменения в интеграционную ветвь. Предлагается закрыть private ветвь Глава 10 29 Checkout на Private ветви • Checkout создает Private ветвь Глава 10 30 Завершение работы с Private ветвью • Член команды может выбирать сливать ли изменения в интеграционную ветвь Чтобы сделать изменения доступными для команды, их необходимо слить с интеграционной ветвью ИЛИ • Отложить работу на Private ветви с сохранением всех изменений на ней Глава 10 31 Завершение работы c Private ветвью (продолжение) • Когда работа с Private ветвью заканчивается, Config spec View восстанавливает все изменения в профайле View Config spec. Глава 10 32 Завершение работы для Собственной ветви (продолжение) • Если Собственная ветвь слита с интеграционной (и не заблокирована), то результат слияния может быть просмотрен через Version Tree Browser. Глава 10 33 Тестирование • Тестирование исходных кодов на собственной ветви (рекомендуется до слияния с интегрированной ветвью) • Тестирование исходных кодов на интегрированной ветви • Добавление (check in) исходных файлов в VOB Глава 10 34 Контрольные вопросы •Как ClearCase решает задачи параллельной разработки? • Что необходимо сделать до создания новой ветви в версионном дереве элемента? • Где в GUI можно создать новые типы ветвей? • Как можно добавить ветвь к версионному дереву элемента? • Опишите процессы после использования View-профайлов с Private ветвью Глава 10 35