本文欢迎任何非商业转载,要求:转载必须转载全文,并加明作者:崔秉环,出处:http://blog.csdn.net/battle_cry,谢谢!
1.1 UCM规则
一般情况下,不要修改UCM规则,而且ClearCase的公开文档中没有对UCM规则的描述,本文只是作者对UCM规则的试验与理解获得,不保证正确性。
以下是一个UCM 视图的Config_Spec:
ucm
identity UCM.Stream oid:9fd98bf2.f8be42ba.90b8.b4:5c:bd:2c:8d:66@vobuuid:3073f95a.f08a45d2.bc05.ea:ff:4e:97:8b:ea 1
# ONLY EDIT THIS CONFIG SPEC IN THE INDICATED "CUSTOM" AREAS
#
# This config spec was automatically generated by the UCM stream
# "Only_Comp1_Int" at 2006-4-19 13:17:50.
#
# Select checked out versions
element * CHECKEDOUT
# Component selection rules...
element "[0a71c94ae2f74f80a1a7e70ef7722ca1=\Train]/Comp1/..." .../Only_Comp1_Int/LATEST
element "[0a71c94ae2f74f80a1a7e70ef7722ca1=\Train]/Comp1/..." /main/0 -mkbranch Only_Comp1_Int
element "[0a71c94ae2f74f80a1a7e70ef7722ca1=\Train]/Comp1/..." /main/0 -mkbranch Only_Comp1_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与end ucm标识了UCM规则的开始与结束。在其内的所有规则块的解释都按UCM规则进行。
1.1.1 Inentity UCM.Stream
identity UCM.Stream描述了该视图所attach的Stream的信息,这样,视图的SetActivity、Checkout、Chekcin等操作可以关联到Stream上。
identity UCM.Stream格式如下:
identity UCM.Stream streamoid@vobuuid 1
其中Streamoid应用ClearCase内部数据库信息描述,以oid:为头,之后加上了Stream的UUID。Vobuuid以vobuuid:加上PVOB的UUID。
可以应cleartool describe看一下信息,例如:
Cleartool describe –short oid:9fd98bf2.f8be42ba.90b8.b4:5c:bd:2c:8d:66@vobuuid:3073f95a.f08a45d2.bc05.ea:ff:4e:97:8b:ea
得到的结果与cleartool describe –short stream:Only_Comp1_Int@\Train_PVOB一致。
在实验中,可以将streamoid@vobuuid替换为Only_Comp1_Int@\Train_PVOB,结果与原UCM 视图显示内容一致。
需要注意在streamoid@vobuuid之后需要加上空格与1,否则会不符合规则,含义不明。
1.1.2 Component选择规则
在UCM 视图中,除了应用element * CHECKEDOUT获取当前视图所有Checkout的配置项外,其他配置项都通过Component选择规则获取,每个Component包括三行,可以有多个Component;第一行格式如下:
element “[vobuuid=\VOB tag ]/Component name/…” …/Stream_branch/LATEST
其中vobuuid为Component所在的VOB的UUID,VOB tag为Component所在VOB在当前Region的tag,如果是单一Component的VOB,则没有Component name;…则是选择当前Component下的所有配置项,包括目录与文件配置项;Stream_branch为当前Stream的名称,因为相应分支名称采用了Stream的名称,因为不知道可能在哪层上创建,所以在前面加上了…。该行的目的获取所有在该分支下的配置项。
第二行格式如下:
element “[vobuuid=\VOB tag ]/Component name/…” foundation_baseline –mkbranch Stream_branch
如果是集中流,foundation_baseline为Stream初时创建时所选择的Component的baseline,如果是开发流,而且从集成流上rebase了recommended baseline,则会是Recommend Baseline;可以用命令cleartool lsstream -l获取流的foundation baselines。该行的目的是匹配所有foundation baseline的配置项,如果Checkout,在baseline选择的版本分支下则自动创建该流的分支。如果在创建Stream时所选择的Component是一个空的Component,则foundation_baseline改为/main/0。
第三行的格式如下:
element “[vobuuid=\VOB tag ]/Component name/…” /main/0 –mkbranch Stream_branch
该行的目的是,如果创建新的Element,则会在主分支main下创建一个Stream分支。
1.1.3 其他规则
在UCM 视图中可以让用户自行添加一些规则,这就是CustomElem规则,在UCM 视图的Config_Spec中两行注释,在中间可以添加规则,这些不会被自动清除。
#UCMCustomElemBegin - DO NOT REMOVE - ADD CUSTOM ELEMENT RULES AFTER THIS LINE
#UCMCustomElemEnd - DO NOT REMOVE - END CUSTOM ELEMENT RULES
这两行注释置于Component选择规则之后,这样保证了配置项版本优先选择Stream的,在这里需要注意,只能选择 Stream所不涵盖的配置项,因为Component选择规则在先,Stream所涵盖的配置项的版本已被选中,在其后的规则将会被忽略。
在UCM 视图的Config_Spec中有以下一行:
element * /main/0 -ucm -nocheckout
这一行保证了不会将已Mount的VOB下的配置项显示出来,因为/main/0的含义是初始,为空。
在最后是针对静态UCM视图的Load规则。