ClearCase Config_Spec 之版本选择规则

本文欢迎任何非商业转载行为,要求:转载必须转载全文,并加明作者,出处,谢谢!

标准版本选择规则的格式如下:

scope pattern version-selector [ optional-clause ]

一行可以有多个标准规则,以分号间隔。

所有scope均为针对配置项,所以都以element开始,可以设置-file-directory-eltype参数。

如果element不包括任何参数,则之后的pattern verion-selector [ optional-clause ]对任何配置项都有效,-file-directory分别只对文件配置项、目录配置项起作用;-eltype后与指定的配置项类型有一空格间隔,例如:–eltype text_file,表明之后的匹配规则只对text_file类型的配置项起作用;如果一个eltype包括一些一些子eltype,只对本eltype有效,例如:-eltype file不对text_file类型配置项有效。

 

pattern为配置项匹规则,可以以下使用通配符:

a) ?                匹配任何符合命名规则的单个字符,例如:a?c,则可以匹配a 1c aAca.c,等,但是不匹配ac、与a/c

b) *        匹配0至符合命名规则最大长度的任何符合命名规则的字符,这些字符不必一致,与?不同的是,*可以匹配0个字符,例如:*src*,匹配TheSrcsrc1src

c) ~       对应根目录。

d) [abc]   对应[]内的任何一个字符,例如:C*[gs].java,匹配Config.javaConstants.java

e) [a-z]    对应[]ASCII编码位于-之前字符与-之后字符之间的一个字符,包括-之前与之后的各个字符,例如:t[a-e]st匹配tasttbsttcsttdsttest

f) …       匹配0至符合规则要求的任意多层目录,例如:src/…/Config.java,匹配以下配置项:

                            src/com/Config.java

                            src/com/test/Config.java

                            src/Config.java

                     如果匹配规则为src/…,则包括src目录及它所有的子目录。

以上通配符可以组合,例如:匹配符 src/…/C[a- z][A-Z].java匹配以下配置项:

                            src/com/CaA.java

                            src/com/test/CoT.java

 

Version-selector描述了针对配置项的版本选择规则,有以下三种版本选择规则:

a)    分支名称加版本号:如/main/0,就表示main分支上版本0,这是一个空的版本,而/main/test/1则表示了main分支下test分支下的第1个版本。

b)   分支名称加Label:如/main/test/MyLabel2,则寻找的是所有main/test分支下被打上MyLabel2的配置项的版本。也可以只有Label,则会寻找所有分支上被打上该Label的配置项的版本,如果在多个分支上同一个配置项有多个版本打上了该Label,则会出现错误。例如:有一个预定义的LABELLATEST/main/LATEST是表明main分支上的最新的版本,但是LATEST并不是版本号,而是预定义的Label,每个分支的最新版本都具有这个 Label;这里就要注意,不能应用 …/LATEST,这表明选择所有分支上最后的版本,会发生冲突,如果在你的config_spec中出现以上版本选择规则,一般情况下会报出一个view server的致命错误。

c) 分支名称加上查询选项:如/main/test/{TESTED==yes},寻找的是在main/test分支下最后一个TESTED属性为yes的版本。与Label一样,也可以只有查询选项,但是也一样要求不能出现冲突。

Version-selector中的几个特殊的规则:

a) CHECKEDOUT:匹配当前视图被Checkout的版本,如果是文件配置项,则是与配置项名称相同的视图私有文件。

b) –config:匹配由clearmakeomake生成的Derived Objects,可以指定不同版本的配置项所对应的不同的Derived Objects

c) –none:这个匹配规则主要是针对Unix操作系统,在Windows下设置了,如果不应用cleartool ls,则不会发现配置项的存在,而在UNIX系统下,会产生一个ENOENT(没有这样的文件或目录)的错误。应用cleartool ls会提示:[no version selected]

d) –error:这个匹配规则与上一个一样是针对Uni操作系统的;应用cleartool ls会提示:[error on reference]

 

最后是可选项:optional-clause。包括以下可选项:

a) –time:这个可选项的应用一定要在Version-selector中有LATEST这个标签才有效,如果没有这个标签,则不会提示错误,但是也不会起作用。

-time后要加上日期与时间,表示从LATEST向上查找,找到一个最近一个从指定日期与时间之后创建的版本,如果在指定的日期和时间时配置项还不存在,则不会给出初始空版本,而是匹配LATEST版本。

日期与时间的格式如下:

date.time | date | time | now

以上因项是互斥的,可以在后面加上UTC,这样时间为格林威治标准时间,可以避免时区的影响。如果没有指定日期,则缺省设置为today;如果没有指定时间,则缺省设置为00:00:00。需要注意,日期在执行完setcs就自动转变为标准日期,如果设置为today,同一个视图没有执行endview操作,一周以后,匹配规则找的是前一周时间的版本,而不是最近的版本,所以如果设置了-time选项,且应用了today等方式设置日期,最好执行endview后再执行startview,这时会重新设置日期。

以下是日期与时间的规则。

date :=day-of-week | long-date

time :=h[h]:m[m][:s[s]] [UTC [ [ + | - ]h[h][:m[m] ] ] ]

day-of-week :=today |yesterday |Sunday | ... |Saturday |Sun | ... |Sat long-date :=d[d]month[[yy]yy]

month :=January |... |December |Jan |... |Dec

例如:.../Config.java /main/Only_Comp2_Int/LATEST -time 10:00,匹配的是最近一次设置Config_SpecStartView当天10:00以后main主分支下Only_Comp2_Int分支下任何Config.java的第一个版本。

       Timenow是一个特殊格式,指定的当前时间。

b) –nocheckout:所选择的配置项不显示Checkout版本,所对应的配置项的规则必须位于element * CHECKEDOUT的上面,如果第一行是element * CHECKEDOUT,则-nocheckout设置无效;可以删除lement * CHECKEDOUT,也可以修改element * CHECKEDOUT,不再匹配任何配置项。如果配置项确实有checkout的版本,则会在视图提示Eclipse,即有checkout状态的配置项,但是不能显示。

 

c) –mkbranch:如果一个匹配前面版本选择规则的配置项的版本被Checkout时,自动建立配置项的指定分支。格式如下:

       -mkbranch branch-type-name

需要注意,这里的branch-type-name必须在VOB中已经定义,如果没有定义会出现错误,无法执行Checkout操作。同时对版本选择规则为-none-error的不起作用。

 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值