Выбор спецификации конфигурации ClearCase на основе атрибута элемента - PullRequest
2 голосов
/ 16 июня 2010

В спецификации конфигурации ClearCase можно ли выбирать версии на основе атрибутов element (не version атрибутов)? Например:

element * ...{SOME_ELEM_ATTR==SOME_VALUE&&lbtype(MY_LABEL1)}

Это не работает, потому что последняя часть спецификации "element" - это version-selector , который смотрит только на атрибуты версии.

То, что я пытаюсь сделать, - это разделить мои файлы на два или более классов, и для разных классов файлов применяются разные строки «элементов». Я попытался пометить все элементы в одном классе атрибутом, но зашел в тупик, пытаясь основать выбор на этом в спецификации конфигурации. Единственный способ, с помощью которого я могу это сделать, - собрать все файлы одного класса в одном месте и использовать вторую конструкцию («шаблон») для различения:

element .../all_class1_files/... MY_LABEL1

но это действительно ужасно, потому что вам нужно переместить все файлы одного класса в одно место или иметь гигантскую конфигурационную спецификацию, в которой перечислены все отдельные каталоги и / или файлы.

Заранее спасибо ...

Ray

Ответы [ 2 ]

0 голосов
/ 17 июня 2010

Я думаю, что у меня есть хорошее решение, использующее "trtype" в качестве критерия выбора (кажется, единственная функция запроса, которая наследует от элемента до версии). Если к элементам Class1 и Class2 прикреплены фиктивные триггеры Class1Files иClass2Files, соответственно, то что-то вроде

element * .../{trtype(Class1Files)&&lbtype(MY_LABEL1)}
element * .../{trtype(Class2Files)&&lbtype(MY_LABEL2)}

должен сделать свое дело. Это выбирает файлы в Class1 с MY_LABEL1 и в Class2 с MY_LABEL2. На самом деле я еще не пробовал это, но я дам вам знать, как это работает.

0 голосов
/ 16 июня 2010

Одним из первых решений было бы заменить критерии атрибута веткой.
Таким образом, вам было бы легче пометить все файлы из той или иной ветви вместо «всех файлов с заданным атрибутом».

Кроме этого обходного пути, вы найдете здесь команду find, основанную на атрибуте (или в справочной странице ).
Затем можно объединитьfind запрос с директивой "-exec" для установки нужной метки.
Таким образом, вам не нужно связываться с config spec синтаксис (который может не поддерживать точные критерии выбора, которые вам нужны).


Я не проверял его, но вы можете попробовать

element * ...{SOME_ELEM_ATTR==SOME_VALUE && lbtype_sub(MY_LABEL1)}

, поскольку lbtype_sub является селектором элемента, ветви и версии (тогда как lbtype является просто селектором версии).
Однако, поскольку lbtype не является частью критериев спецификации конфигурации, я сомневаюсь в этомможет работать в указанной спецификации конфигурации.

...