控制规则块
控制规则块是笔者自己的定义,ClearCase给出的标准说明是时间规则块与分支规则块。这些规则块设置的目的是如果有几个配置项选择中有相同的-time或-mkbranch选项,则可以使用时间规则块与分支规则块,下面分别描述这时间规则块与分支规则块。
1 时间规则块
格式如下:
time date_time
规则行
end time [ date_time ]
其中匹配规则可以是标准规则块,也可以包括控制规则块与其他规则块。如果在其中再次嵌入时间规则块,则在嵌入的规则块内遵守嵌入的时间定义,嵌入结束后,遵守外层的定义。例如:
element * CHECKEDOUT
time 17:02
element ...\test3.txt /main/Test_Config_Spec/LATEST
time 17:00
element ...\test1.txt /main/Test_Config_Spec/LATEST
end time 17:00
element ...\test4.txt /main/Test_Config_Spec/LATEST
end time 17:02
element * /main/Test_Config_Spec/LATEST
element * /main/LATEST -mkbranch Test_Config_Spec
等同于以下规则块:
element * CHECKEDOUT
element ...\test3.txt /main/Test_Config_Spec/LATEST –time 17:02
element ...\test1.txt /main/Test_Config_Spec/LATEST –time 17:00
element ...\test4.txt /main/Test_Config_Spec/LATEST –time 17:02
element * /main/Test_Config_Spec/LATEST
element * /main/LATEST -mkbranch Test_Config_Spec
如果最后一个时间规则块没有定义end time,则一直到最后一行,时间规则都起作用。end time后一般可以不加上date_time,但是如果有嵌套,最好加上时间描述,描述要与向上找到的第一个未匹配的time所描述的时间一致。
如果在时间规则块内嵌的匹配规则带有-time选项,则匹配规则自带的time选项生效,而时间规则对这个带time选项的匹配规则无效。
2 分支规则块
格式如下:
mkbranch
branch-type-name [ –override ]
规则行
end mkbranch [
branch-type-name ]
等同于每个规则行后加上-mkbranch branch-type-name。如果内部的规则行带有-mkbranch选项,且没有使用-override,则应用内部规则行自带的mkbranch选项,如果应用-override,则会将定义的分支覆盖内部规则行自定义的mkbrranch选项。如果内部规则行是CHECKEDOUT,则mkbranch无效。
分支规则块可以嵌套,在嵌套的情况下,最好在end mkbranch后加上分支的名字;ClearCase会向上第一个未匹配的mkbranch,如果名字不一致,会提示错误,以防止出现误操作。
分支规则内可以再嵌套分支规则块,会创建多层的分支。例如:
element * CHECKEDOUT
element * /main/Test_Config_Spec/Test_Config_Spec_Sub/LATEST
mkbranch Test_Config_Spec
mkbranch Test_Config_Spec_Sub
element * /main/Test_Config_Spec/LATEST
end mkbranch Test_Config_Spec_Sub
element * /main/LATEST
end mkbranch Test_Config_Spec
这个分支等同于
element * CHECKEDOUT
element * /main/Test_Config_Spec/Test_Config_Spec_Sub/LATEST
element * /main/Test_Config_Spec/LATEST –mkbranch Test_Config_Spec_Sub
element * /main/LATEST –mkbranch Test_Config_Spec
在这种情况下在所选择的配置项版本将会检查是否有分支,如果没,则会建立新分支。