在ClearCase配置规范中,是否可以根据元素 attributres(不是版本属性)选择版本?例如:
element * ...{SOME_ELEM_ATTR==SOME_VALUE&&lbtype(MY_LABEL1)}
这不起作用,因为“元素”规范的最后一部分是版本选择器,它只查看版本属性。
我要做的是将我的文件分成两个或更多个类,并将不同的“元素”行应用于不同类别的文件。我尝试使用一个属性标记一个类中的所有元素,但尝试将选择基于配置规范中的选择基础时达到了死胡同。我能看到做这种事情的唯一方法是将一个类的所有文件放在一个地方并使用第二个结构(“模式”)来区分:
element .../all_class1_files/... MY_LABEL1
但这真的很难看,因为你必须将一个类的所有文件移动到一个地方,或者有一个giantic配置规范列出所有单独的目录和/或文件。
提前致谢...
雷
答案 0 :(得分:0)
第一个解决方案是用分支替换属性标准 这样,您就可以更轻松地标记来自一个分支或另一个分支的所有文件,而不是“具有给定属性的所有文件”。
除了此解决方法之外,您会找到一些find
command based on attribute here(或man page)。
然后,您可以将 find
query 与“-exec
”指令合并,以放置您想要的标签。
这样,您就不必弄乱config spec syntax(可能不支持您所遵循的确切选择标准)。
我没有测试它,但你可以试试
element * ...{SOME_ELEM_ATTR==SOME_VALUE && lbtype_sub(MY_LABEL1)}
,因为lbtype_sub
是一个元素,分支和版本选择器(而lbtype
只是一个版本选择器)。
但是,由于lbtype
似乎不是配置规范标准的一部分,我怀疑它可以在所述配置规范中工作。
答案 1 :(得分:0)
我认为我已经找到了一个很好的解决方案,使用“trtype”作为选择标准(似乎是从元素继承到版本的唯一查询函数)。如果Class1和Class2元素分别附加了伪触发器Class1Files和Class2Files,那么
element * .../{trtype(Class1Files)&&lbtype(MY_LABEL1)}
element * .../{trtype(Class2Files)&&lbtype(MY_LABEL2)}
应该做的伎俩。这将使用MY_LABEL1选择Class1中的文件,使用MY_LABEL2选择Class2中的文件。我还没有尝试过,但我会告诉你这是怎么回事。