Глава 12 Использование метаданных Конфигурационное управление с применением ClearCase Использование метаданных Цели Изучив эту главу, вы сможете: •Понимать, что такое метаданные ClearCase •Использовать метки •Использовать атрибуты •Использовать гиперссылки •Ознакомиться с механизмом настройки стиля использования ClearCase, основанном на триггерах. • Поддержки выбора элементов в версиях; • Определение критериев выбора элементов VOB; • Определение логического взаимодействия между объектами VOB; • Определение проектной схемы; • Логической связи элементов VOB с внешними объектами; • Действенного расширения функциональности; • Определение выпуска релизов. Метаданные ClearCase – Обзор. • Пункты, аннотировавшие различные объекты в VOB • Использование типов метаданных ограничено, хотя, некоторые применимы к версии объекта, ветви или элементу в целом. • Типы метаданных включают: Ветви (brtype) Элементы (eltype) Метки (lbtype) Атрибуты (attype) Гиперссылки (hltype) Триггеры (trtype) Создание Метаданных. Метаданные ClearCase создаются последующей схеме: 1. Создание типа метаданных: Определяет тип для использования в определенном VOB. Выполняется с помощью Type Explorer Эта процедура предполагает согласованность и административный контроль 2. Создание экземпляра типа метаданных: Любой пользователь может применить метаданные к объекту VOB. Осуществляется с помощью различных утилит GUI Использование Type Explorer. Explorer – графический интерфейс для создания, просмотра и управления типами метаданных • Каждая папка внутри Type Explorer представляет один из следующих типов метаданных: • Type Ветви Атрибуты Элементы Гиперссылки Метки Триггеры Идентификация версий метками • Метка (или уникальный опознаватель версии) может быть прикреплена к любой версии для уникальной идентификации определенной версии этого элемента foo.c \src design.doc REL3.1.5 REL3.1.5 REL3.1.5 Использование меток •В конфигурационной спецификации View: element * REL3 •В версионном расширении имени файла: foo.c@@\main\5 = = foo.c@@\REL2.3 •Для обозначения ключевых точек в проекта, выделения начальных точек ветвления или при определении версии в составе baseline : Opt.c@@\main\robin_branch\BASE •Для определения условий запроса на поиск в cleartool: Cleartool find –all –version “lbtype (REL1)” –print Создание типа метки • перед тем как метка REL3 будет применена, тип метки должен быть создан в VOB Присоединение метки • Метки могут быть прикреплены к одной версии, рекурсивно ко всем текущим версиям элементов директории или ко всем версиям, участвовавшим в определенном процессе сборки Использование Apply Label Wizard • Apply Label Wizard может быть использован для рекурсивного присваивания меток Просмотр меток • Метки могут быть просмотрены через Version Tree Browser, панель свойств версии или команду cleartool describe. Что такое атрибут? • Пара имя/величина, использующейся для аннотации версии, элемента, ветви, символической связи VOB или гиперссылки • Величина атрибута может иметь определенный интервал значений и может быть нескольких типов msg.c \main menu.c \main \bug tested = "yes" tested = "no" \bug BugNum = 515 tested = "yes" \v3 BugNum = 272 tested = "yes" BugNum = 651 tested = "no" tested = "no" BugNum = 347 tested = "no" Использование атрибутов •В config spec: Element * \main\ {Qastat = = “FALSE”} • При поиске в VOB I:dcrowe_hw> cleartool find . –element Attype (BugNum) -print I:dcrowe_hw> cleartool find src –element BugNum ==405 -print Создание типа атрибута • Чтобы создать новый тип атрибута тем же способом, что и тип метки, используйте Type Explorer Создание типа атрибута (продолжение) • Тип величины должен быть связан с атрибутом. • Допустимые типы: Integer Real Строковый (string) Время (time) Opaque Прикрепление атрибутов Гиперссылки – обзор • Аннотация гиперссылки хранятся в БД VOB. • Каждый конец гиперссылки должен указывать на объект VOB, на текстовую строку, либо на то и другое (по крайней мере, хотя бы один конец должен указывать на объект VOB) Объекты VOB могут находиться в различных VOB Слияние гиперссылок предопределено ClearCase для записи операций слияния. hello.doc hello.c \main \main \bug \bug \v3 Implements Создание типов гиперссылок • Гиперссылка должна быть определена в VOB, как и остальные метаданные. Присоединение гиперссылок • Используйте команду cleartool mkhlink для присоединение гиперссылки к объекту VOB. • Присоединение гиперссылки к определенной версии элемента: I: dcrowe_hw > cleartool mkhlink Implements Src \hello.c doc\hello.txt Created hyperlink “Implements@501@\Project_X”. Событие Pre-event Обработчик Post-event Передача управления Триггеры – обзор • Триггеры – метаданные, определяющие действия, выполняемые в случае наступления определенных событий ClearCase. События - операторы ClearCase такие, как checkout, checkin и т.д., модифицирующие элементы VOB или метаданные Действия – программы, bat-файлы или команды ClearCase такие, как mkattr или mklable. •Триггеры могут «срабатывать» одним из двух способов: Pre-event Post-event срабатывают перед событием срабатывают после события Триггеры Pre-event и Post-event • Триггеры Pre-event помогают проводить установленную политику использования ClearCase если триггер возвращает не нулевое значение, событие не происходит Пример: Устанавливается Pre-event триггер, позволяющий создать тип branch только руководителю проекта • Триггеры Post-event Используются для запуска действий после события После того как событие произошло, они могу использоваться для добавления информации или запуска других операций. Пример: Устанавливается Post-event триггер на операцию checkin, по которому атрибут с номером задания прикрепляется к версии в состоянии checkin. Создание триггера – пример %CLEARCASE_USER%. Имя пользователя, инициировавшего событие %CLEARCASE_PN%. Полный путь до элемента, над которым проводятся действия. %CLEARCASE_PN2%. Упрощенный путь. Указывается только путь до файла; %CLEARCASE_BRTYPE%. Тип бренча, на котором было порождено событие. %CLEARCASE_COMMENT%. Комментарий, которым сопровождалось событие; %CLEARCASE_ELTYPE%. Тип элемента, на котором произошло событие; %CLEARCASE_HLTYPE%. Тип гиперссылки элемента %CLEARCASE_LBTYPE%. Тип метки; %CLEARCASE_OUT_PN%. Результирующий путь %CLEARCASE_OP_KIND%. Наименование операции события. Создание триггера • mktrtype Mktrtype –element –all postop checkout –exec ‘net send comp1 %CLEARCASE_PN%-is CO’ co_send • Создать тип триггера co_send для всех элементов, выводящихся в состояние checkout. Триггер срабатывает после работы стандартного обработчика событий СС. Триггер инициирует, системной командой net send, отправку сообщения на консоль с именем comp1, в качестве дополнительных параметров, на консоль отправляется адре элемента, выводимого в CO (через переменную среды) Mktrtype –element –all –preop checkout –eltype zip_file –nusers admin,manager –exec ‘ccperl –e \”exit(-1);\”’ exept_trigg • Создать тип триггера exept_trigg для всех элементов, выводящихся в состояние checkout. • Триггер срабатывает для всех пользователей, кроме перечисленных. Передача управления триггеру производится до стандартного обработчика. В случае совпадения несовпадения имени пользователя выполнится условие exit (-1) – команда на прерывание действия, и СС не выведет элемент в данное состояние Mktrtype –element –preop checkout –nusers admin,manager –exec ‘ccperl –e \”exit(-1);\”’ exept_trigg_for_file • Создать тип триггера exept_trigg_for_file. Тип триггера повторяет предыдущий пример, за тем исключением, что на этапе создания не известен конкретный элемент, на который необходимо назначить триггер mktrtype -nc -element -all -preop rmver -brtype main –nusers admin,manager – exec ‘ccperl –e \”exit(-1);\”’ exept_trigg_for_branch • Создать тип триггер, запрещающий удалять версии с основного дерева версий. Исключение составляют пользователи admin и manager. Формат запретительного скрипта if($ENV{CLEARCASE_USER}=~"ivanov")# Проверяем пользователя { $ent = system("clearprompt yes_no -prompt \"Нельзя!\" -mask abort -prefer_gui "); #при помощи специальной инструкции ClearCase выводим сообщение об ошибке exit(-1); # делаем код возврата -1. Стандартный обработчик его воспримет, и # не будет запускаться } Контрольные вопросы. •Что такое метаданные ClearCase? •Какие типы метаданных существуют? •Укажите 2 способа прикрепления меток в GUI? •Перечислите типы различных значений атрибутов? •Укажите 2 объекта, к которым можно прикрепить атрибуты? •Что может делать триггер? Когда он запускается?