Выбор спецификации конфигурации ClearCase на основе атрибута элемента
В спецификации конфигурации ClearCase можно ли выбирать версии на основе атрибутов элемента (не атрибутов версии)? Например:
element * ...{SOME_ELEM_ATTR==SOME_VALUE&&lbtype(MY_LABEL1)}
Это не работает, потому что последняя часть спецификации "element" является селектором версий, который смотрит только на атрибуты версии.
То, что я пытаюсь сделать, это разделить мои файлы на два или более классов, и разные строки элементов применяются к разным классам файлов. Я попытался пометить все элементы в одном классе атрибутом, но зашел в тупик, пытаясь основать выбор на этом в спецификации конфигурации. Единственный способ, с помощью которого я могу это сделать, - поместить все файлы одного класса в одно место и использовать вторую конструкцию ("шаблон") для различения:
element .../all_class1_files/... MY_LABEL1
но это действительно ужасно, потому что вы должны переместить все файлы одного класса в одно место или иметь гигантскую конфигурационную спецификацию, в которой перечислены все отдельные каталоги и / или файлы.
Заранее спасибо...
луч
2 ответа
Я думаю, что у меня есть хорошее решение, использующее "trtype" в качестве критерия выбора (кажется, единственная функция запроса, которая наследует от элемента к версии). Если к элементам Class1 и Class2 прикреплены фиктивные триггеры Class1Files и Class2Files, соответственно, то что-то вроде
element * .../{trtype(Class1Files)&&lbtype(MY_LABEL1)}
element * .../{trtype(Class2Files)&&lbtype(MY_LABEL2)}
должен сделать свое дело. Это выбирает файлы в Class1 с MY_LABEL1 и в Class2 с MY_LABEL2. На самом деле я еще не пробовал это, но я дам вам знать, как это работает.
Одним из первых решений было бы заменить критерии атрибута ветвью.
Таким образом, вам будет проще пометить все файлы из той или иной ветви, а не "все файлы с заданным атрибутом".
Помимо этого обходного пути, вы найдете некоторые find
команда на основе атрибута здесь (или на странице руководства).
Вы могли бы тогда объединить find
запрос с " -exec
Директива поставить ярлык, который вы хотите.
Таким образом, вам не нужно связываться с синтаксисом спецификации конфигурации (который может не поддерживать точные критерии выбора, которые вам нужны).
Я не проверял это, но вы могли бы попробовать
element * ...{SOME_ELEM_ATTR==SOME_VALUE && lbtype_sub(MY_LABEL1)}
, так как lbtype_sub
является селектором элемента, ветви и версии (тогда как lbtype
это просто выбор версии).
Тем не менее, так как lbtype
кажется, не является частью критериев спецификации конфигурации, я сомневаюсь, что это может работать в указанной спецификации конфигурации.