大纲:

         标准规则

scope     pattern     version-selector     [ optional-clause ]

         创建分支规则

mkbranch branch-type-name [ -override ]

...

end mkbranch [ branch-type-name ] ]

         时间规则

time date-time

...

end time [ date-time ] ]

         文件包含规则

include config-spec-pname

         加载规则

load pname ...

 

详述

视图配置规则包含选择元素版本的顺序规则集。

 

每个视图的缺省配置规则为

element * CHECKEDOUT     (如果有的话,对于任何元素,选择检出版本)

element * /main/LATEST (否则选择main上的最新版本)

 

修改配置规则的命令

catcs      Lists a view's config spec.

setcs      Makes a specified file a view's config spec.

edcs       Revises the current config spec of a view.

update -add_loadrules   Adds load rules to the config spec of a snapshot view while updating the view.

 

配置规则如何选择元素版本

对于每一个元素,视图服务器首先匹配配置规则的第一条规则寻找元素版本,如果存在,则这个元素加载到view中;如果有多个版本满足,会报错,没有任何版本会加载到view中;如果没有版本满足第一条规则,搜索将继续。配置规则如此顺序执行每条规则,直到最后一条规则,优先满足第一条规则。

 

语法总则

每一条规则必须包含在单个文本行内,不能使用(\)(UNIX)和(^)(Windows)或者其它续行符号。多条规则可以放在单行上,用(;)分隔;

以#开始的行为注释行。多余空白将会被忽略掉,如果在version-selector含空白,请用单引号括住。

包含配置规则路径必须使用(/)作为路径分隔符,加载的vob目录路径使用(/)和(\)都可以。

配置规则存在两种形式,一种是文本形式,一种是编译形式的,如果在“错误”的系统上编译会在视图服务器上产生“错误”的编译形式,此时视图将无法在客户端“正常”使用。只需要在“正确”的操作系统上重新编译就好了。cleartool edcs or setcs –current。

例如:

element /vob_p2/src/*    /main/rel2/LATEST

在Windows下可以使用,如果在Unix下该vob路径为/vobs/vob_p2,则此配置规则无法使用。

 

标准规则
范围

指定此规则是应用于所有元素还是某些特定元素上。

element 应用于所有元素

element -file 应用于file元素

element -directory 应用于directory元素

element -eltype element-type 应用于指定类型元素上

 

模式

* 匹配所有元素路径,不循环匹配

Matches all element pathnames; does not match recursively.

*.c匹配所有以.c为后缀的元素路径

src/util.c匹配任何以src为名的目录中的util.c元素

/vobs/project/include/util.h匹配一个特定元素

src/.../util.c匹配在src子目录中以及本身目录中存在的util.c元素

src/.../*.[ch] 匹配在src子目录中以及本身目录中存在的.c或者.h为后缀的元素

src/...匹配src目录树

 

注意:所有目录必须以vob tag为相对路径,例如vobtag为/vobs/project,则project/src/util.c是不正确的,必须是/vobs/project/src/util.c或者是src/util.c。

 

版本选择器

/main main分支

/main/motif/bugfix  bugfix分支,从/main/motif分支拉出

 

/main/2 main分支上的版本2

hello.c@@\main\4 main分支上hello.c的版本4

include@@\main\4\hello.h\main\3 include目录main分支上的版本4下的hello.c在main下去下的版本3

在版本扩展路径中不能使用…符号,例如include.h@@/.../bugfix/REL2 不合法。

 

根据版本标签选取

...\bugfix\REL2

 

通过query选择

选择条件通过大括号括住

unix

/main/{TESTED=="yes"}      main分支下属性TESTED为yes的元素版本

windows

\main\{TESTED=="yes"}     

 

扩展路径中,不能同时使用分支和query选择

% cat "include.h@@/main/rel2_bugfix/{attype(TESTED)}" 不合法

 

可选选项

-time date-time

表示在此时间之前的最新版本

/main/LATEST -time 10-Jul.19:00

-time yesterday     

/main/bugfix/LATEST -time Wed.12:00

-time 12-jun-99    

 

-mkbranch 自动制作分支

(1)   element * CHECKEDOUT

(2)   element * .../br2/LATEST

(3)   element * .../br1/LATEST -mkbranch br2

(4)   element * MYLABEL -mkbranch br1

(5)   element * /main/LATEST

 

(1)   element * CHECKEDOUT

(2)   element * ...\br2\LATEST

(3)   element * ...\br1\LATEST -mkbranch br2

(4)   element * MYLABEL -mkbranch br1

(5)   element * \main\LATEST

 

当有多个子句需要创建相同的分支时,使用此语法将更加清晰,功能类似于在包含的每个语句后增加-mkbranch

mkbranch branch-type-name [ -override ]

<config spec lines>

[ end mkbranch [ branch-type-name ] ]

示例:

element * .../branch2/LATEST

mkbranch branch2

 

element * .../branch1/LATEST

mkbranch branch1

 

element * /main/LATEST

 

end mkbranch branch1

end mkbranch branch2

 

time date-time

[ end time [ date-time ] ]

与mkbranch相似,确认影响范围。