2010-06-16 125 views
2

在ClearCase配置規範中,是否可以根據元素選擇版本 attributres(而不是版本屬性)?例如:基於元素屬性的ClearCase配置規範選擇

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

這不起作用,因爲「元素」規範的最後一部分是版本選擇,只着眼於版本的屬性。

我想要做的是將我的文件分成兩個或更多的類,並有不同的「元素」行適用於不同類的文件。我嘗試用一​​個屬性標記一個類中的所有元素,但是嘗試將配置選項基於配置規範中的選擇。我可以看到做這樣的事情,唯一的辦法就是把一個班的所有文件在一個地方,並使用第二構造(以下簡稱「模式」)來區分:

element .../all_class1_files/... MY_LABEL1 

但這實在是太醜因爲您必須將一個類的所有文件移動到一個位置,或者使用giantic配置規範列出所有單個目錄和/或文件。

在此先感謝...

回答

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似乎不是配置規範標準的一部分,我懷疑它可以在所述配置規範中工作。

+0

謝謝,感謝您的幫助,VonC。由分支機構進行選擇將起作用,但由於涉及大量分支機構,因此它很複雜。使用「find」標記文件不是一個可行的選項,因爲每次創建版本時都必須執行此操作。但我想我可能會使用「trtype」查詢功能來解決一個很好的解決方案。 – 2010-06-17 16:04:00

+0

@射線:有趣。如果你有一個可行的解決方案,你可以在這裏發佈(如果你願意,可以選擇它作爲官方解決方案) – VonC 2010-06-17 16:12:50

0

我想我已經用一個很好的解決方案,使用「trtype」作爲選擇標準(似乎是從元素繼承到版本的唯一查詢函數)。如果1類和類2元附加有假觸發Class1Files andClass2Files,分別,然後像

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

應該做的伎倆。這將使用MY_LABEL1選擇Class1中的文件,並使用MY_LABEL2選擇Class2中的文件。我還沒有嘗試過,但我會讓你知道這是如何解決的。