ClearCase Config_Spec 之規則

本文歡迎任何非商業轉載行爲,要求:轉載必須轉載全文,並加明作者,出處,謝謝!

在創建一個非UCM模式的動態視圖後,我們可以通過命令行或圖形界面看一下它的Config_Spec

element * CHECKEDOUT

element * /main/LATEST

這是Base ClearCase視圖缺省的Config_Spec,第一行的含義是如果在當前視圖任何配置項執行了Check out操作,則選擇配置項的被Check out的版本;第二行的含義是選擇在main分支上最新的未Check out的版本。

IBM Rational ClearCase的隨機文檔cc_ref.中是這樣描述版本選擇規則的:在決定視圖上配置項的版本映射時,對這些版本選擇規則從上向下檢查,首先檢查所有被Mount上的VOB中的配置項是否有符合第一行規則的版本,如果有符合規則的版本,則將配置項的該版本映射到視圖上,同時針對該配置項忽略以後和行的版本選擇規則;如果配置項沒有符合第一行規則的版本,檢查被Mount上的VOB中不符合前面的版本選擇規則的配置項是否有符合下一行規則的版本,重複檢查直至檢查完最後一行Config_Spec規則;最後就得到了所有已經MountVOB上的配置項在該動態視圖上的版本映射。

但是在實際中要注意以下幾點:在試驗中發現如果沒有element * /main/LATEST這最後一行,則任何配置項的版本都不會映射到視圖上,如果只想將要符合前幾行規則的配置項映射,而不想看到main分支上的配置項的最新版本,則可以將最後一行element * /main/LATEST改爲element * /main/0就可以了。

現在,我們回到UCM類型的動態視圖來看一下,如果我們針對某個UCM類型的動態視圖執行一下cleartool catcs命令,例如,針對cuibz_test_int這個視圖:

M:/cuibz_test_int>cleartool catcs

ucm

identity UCM.Stream oid:eb5f484d.d89f46d7.b702.04:7c:84:dd:66:88@vobuuid:7ffa1c

3.25884205.996e.90:64:a3:78:d4:22 1

 

# ONLY EDIT THIS CONFIG SPEC IN THE INDICATED "CUSTOM" AREAS

#

# This config spec was automatically generated by the UCM stream

# "test_Int" at 2005-10-17 9:13:36.

#

 

# Select checked out versions

element * CHECKEDOUT

 

# Component selection rules...

 

element  "[662988dbd7e5485997c63b1eec4f62ed=/CBZTEST_VOB]/..." .../test_Int/LATET

element "[662988dbd7e5485997c63b1eec4f62ed=/CBZTEST_VOB]/..." Initial –mkbranch test_Int

element "[662988dbd7e5485997c63b1eec4f62ed=/CBZTEST_VOB]/..." /main/0 –mkbranch test_Int

 

end ucm

 

#UCMCustomElemBegin - DO NOT REMOVE - ADD CUSTOM ELEMENT RULES AFTER THIS LINE

#UCMCustomElemEnd - DO NOT REMOVE - END CUSTOM ELEMENT RULES

 

# Non-included component backstop rule: no checkouts

element * /main/0 -ucm -nocheckout

 

#UCMCustomLoadBegin - DO NOT REMOVE - ADD CUSTOM LOAD RULES AFTER THIS LINE

 

我們會發現,原來UCM類型的動態視圖獲取配置項的版本的規則也是通過Config_Spec來實現的,不過這些規則基本都是系統在創建Stream時自動生成的,之後所有在該Stream上所創建的View,都會應用這個版本選擇規則。不過從這些Config_Spec規則的#UCMCustomElemBegin描述來看,我們也可以對這個Config_Spec進行修改,以滿足我們的特殊要求。

我們回到前面什麼是Config_Spec這一節的問題:我們如何方便的獲取某個歷史基線版本,例如;Baseline_For_Patch1_2006_02_21;我們可以簡單的編輯剛創建的非UCM模式動態視圖的Config_Spec,在第一行與第二行之間加上一行:

element * Baseline_For_Patch1_2006_02_21

現在刷新一下這個非UCM模式動態視圖,就會發現,視圖所映射的配置項版本基本上就是這條基線的內容。可能出現的問題是有些不需要的VOB的內容也被映射上了,將最後一行按前面提到的改爲element * /main/0就可以解決這個問題。

前面談到的是動態視圖的Config_Spec,這些規則對於靜態視圖同樣有效,靜態視圖與動態視圖的不同的是多了一些規則行,這些規則行決定了符合前面定義的版本選擇規則的配置項的版本中哪些被取到靜態視圖中,這就是Load規則。

現在我們來看一下Config_Spec規則結構,非UCM模式的Config_Spec規則由以下幾類組成:

1.         標準規則塊:1至多行,每行均以element爲開始,每行爲一個配置項版本匹配規則。

2.         控制規則塊:包括分支與時間兩種,包括控制頭、控制尾與內嵌標準規則塊。

3.         Include規則塊:以include開始,將外部文件定義的規則加載。

4.         Load規則塊:以load爲開始,決定加載哪些配置項。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章