Метаданные ClearCase

advertisement
Глава 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 объекта, к которым можно
прикрепить атрибуты?
•Что может делать триггер? Когда он
запускается?
Download