现在的位置: 首页 > 综合 > 正文

ClearCase Trigger指南(5)-Trigger的创建

2013年09月11日 ⁄ 综合 ⁄ 共 4562字 ⁄ 字号 评论关闭

本文欢迎任何非商业用途转载,请注明作者,出处,谢谢!

Trigger的创建

创建Trigger时的参数

在前几节中描述了Trigger是什么,有什么用处以及Trigger的执行机制,但是如果要创建Trigger时,发现会有许多参数,这些参数怎么用,如何写这些小程序,初学者会有很多困惑。

在本节,我们讨论创建Trigger时的参数,在下一节我们会具体讲解根据组织的实际情况定制Trigger

在前面几节的例子中我们提到了可以应用cleartool mktrtype命令去创建Trigger type;如果是创建针对type类型的Trigger,在执行完毕Cleartool mktrtype操作后,Trigger就会起作用,如果是创建针对配置项或UCM对象的Trigger,在执行cleartool mktrtype时没有选用-all选项,则在创建后要执行cleartool mktrigger与具体的对象进行关联后,Trigger才能起作用;创建时要注意,一般情况下要在view中的VOB目录下执行创建命令,这样该Trigger才可以针对当前VOBelementPVOB中的ucmobject

在创建trigger type时的参数可以分为以下九组:

1.        ClearCase操作的类型,有三个互斥选项:- element- type- ucmobject,为必选项;

a)        –element:定义针对element类型clearcase操作的Trigger,可以应用-all选项;在应用-all选项后,该Trigger已被隐含的关联到当前的VOB上,不必再执行cleartool mktrigger命令。

b)        –type:定义针对type类型clearcase操作的Trigger,不能应用-all选项,但是可以在范围列表中针对某一类的type应用-all选项,同时针对type类型的Trigger不用执行cleartool mktrigger命令,在执行完mktrtype后会关联到相应的type上。

c)        –ucmobject:定义针对ucmobject类型clearcase操作的Trigger,可以应用-all选项;在应用-all选项后,该Trigger已被隐含的关联到当前的PVOB上,不必再执行cleartool mktrigger命令。。

2.        确定某些用户的操作不会触发Trigger,参数为-nusers userlistUserlist可以为多个用户,用逗号分隔,该参数为非必选项;一般应用于设定流程,可以设立一个事前触发的Trigger,缺省返回-1,再设置-nusers,这样除指定的几个用户外,其他用户的该操作都会触发Trigger,不能执行这个操作。

3.        针对什么操作定义Trigger,同时Trigger是事前触发或事后触发类型的;参数为- prepop operation- postop operation;其中operation根据第一组参数的不同会有所不同;再次强调,虽然大多数的操作与Cleartool的子命令一致,但是所有的trigger都是针对ClearCase的操作,而不是针对ClearCase命令。

4.        是否更新已有的trigger type-replace,这个选项可以更新已有的Trigger,即便Trigger已经关联到ElementObject也会被修改。

5.        是否对Trigger进行跟踪,大量的Trigger并不会产生交互过程,所以在最开始写Trigger时或Trigger没有产生预计的效果时,我们并不知道执行了哪些TriggerTrigger的执行的结果以及执行中间的错误信息,我们可以在定义Trigger时使用-print参数,这个参数会在开始执行Trigger前给出Trigger的名字及相应的ClearCase的操作类型,中间的错误信息也会给出,最后给出Trigger的执行结果。我们可以不设置这个参数,但是可以设置ClearCase的一个环境变量CLEARCASE_TRACE_TRIGGER,来临时跟踪某个Trigger

6.        是否对Trigger加以注释,可以应用以下一些参数,需要注意,这些参数是互斥的,如果没有设置这些参数,则缺省认为需要注释,会要求输入注释:

a)        –cfile comment-file-pname:注释部分取自某文本文件,需要注意,文件名要是全路径

b)        –cq·uery:对所有受mktrtype命令所影响的event进行注释。

c)        –cqe·ach:对该Trigger进行注释,与cquery先项不同的是,cqeach针对的是所有mktrtype所影响的对象;需要注意:使用cquerycqeach时,不要直接跟上注释,注释是命令执行后提示输入的,cquerycqeach的注释是可以多行的,在UNIX下用Ctrl-D,在Windows下用Ctrl-Z或回车做为结束。如果在cquerycqeach后加上字符串,cleartool 命令并不将它们视为注释,而视为定义的Trigger的名字。

d)        -nc·omment:不加以注释。

e)        -comment comment:对该Trigger进行注释,注释必须是单行的,如果中间有空格,必须要加上双引号。

7.        是否对Trigger的执行加以约束。一般情况下,element操作与UCM Object操作上定义了trigger并关联后,所有的操作都会触发Trigger,如果加上了约束,则只有符合条件的操作才会触发Trigger,如定义-eltype ms_word,则只有针对Word文档的操作才会引发Trigger,而针对源码的操作不会触发。对于type的操作的Trigger,一般情况下则是不触发Trigger,只有包含在约束中才会触发。对于elementtypeUCM object不同类型的Trigger,约束也不同。

a)        Elementelement型的Trigger约束条件可以有attypebrtypehtypelbtypetrtype;参数格式为–att·ype attr-type-selector[,...], –brt·ype branch-type-selector[,...], –elt·ype elem-type-selector [,...], –hlt·ype hlink-type-selector[,...], –lbt·ype label-type-selector[,...], –trt·ype trigger-type-selector[,...] 。需要注意,不支持-all选项与通配符?*

b)        Typetype型的TriggerElementUCM object不同,缺省下不会触发Trigger,只有包含在inclusion-list中才会操作,列表参数同element类型的约束,但是支持-all选,同样不支持通配符。

c)        UcmobjectUCMObject的约束与element较类似,都要是缺省会触发,设置了约束条件后,则只有符合约束才会触发,但是参数与elemetntype有所不同,是–com·ponent component-selector[…] –pro·ject project-selector[,…] –str·eam stream-selector[,...]

d)        如果需要设置多个type,则在每个type之间用逗号分隔即可,但是注意不要使用全角的标点符号。

8.        Trigger创建执行的动作,具体描述请参见前一节Trigger的执行。

9.        Trigger的名称,这是必选项。

在创建完Trigger后,如果针对的是elementucmobject类型的操作,并且没有使用 –all 参数,需要将Trigger类型与相应的对象关联,这需要使用 cleartool 的子命令 mktrigger cleartool mktrigger有以下参数:

a)        –comment,-cfile,-cquery,-cqeach,-ncomment:这几个是互斥选项,具体说明请看前面对mktrtype命令的解释。

b)        –recurse如果mktrigger的命令针对的是目录配置项,则针对当前目录配置项及其下的子树递归的执行mktrigger命令,该命令只对element类型的trigger有效。如果是UNIX下的VOB,其中的symbolic links不会在递归队列中。如果没有-recurse选项,则Trigger只会关联所针对的目录配置项。

c)        –nin·heritnattach互斥选项,这两个选项针对的是目录类型的element配置项。目录类型的配置项有两个Trigger listAttached listinherited list ,其中Attached list是针对目录本身的,而inherited是针对目录下以后新增加文件或目录配置项是否关联Trigger;缺省情况下关联到目录配置项的Trigger,会被关联到Attached listinherited list中,这样Trigger即会目录配置项本身起作用,也会自动关联到该目录配置项下以后新建的文件或目录配置项。如果使用-nattach选项,则Trigger只会关联到该目录配置项的ingerited list中,对该目录配置项不起做用,如果没有使用-recurse,对当前该目录配置项下的文件与目录配置项也不会起作用,这个Trigger对以后这个目录下新建的配置项会起作用,包括文件配置项与目录配置项,其中对目录配置项会关联到目录配置项的attached listinherited list,所以对新增目录配置项之下新增的配置项也起作用。如果这个Trigger只针对该目录配置项本身,而不想遗传给以后该目录配置项下以后新建的配置项,则可以应用-ninherit选项。需要注意,如果应用这两个选项之一,则mktrigger操作只会针对目录配置项。

d)        force:如果在创建Trigger type操作,即mktrtype时用了约束选项,如-eltype filetext_file时,在执行mktrigger时,如果操作对象的条件不符合会所出大量的错误,同时不会将Trigger关联到相应的操作对象上,如果使用-force选项,则可以强制的将Trigger关联到操作对象上,不过这种情况下Trigger不会起作用,直到操作对象的类型发生改变,符合了trigger的约束条件或者使用mktrtype –replace将约束条件改变。

e)        要关联的Trigger类型,这是必选项。

f)         要进行关联的操作对象,只能是配置项或UCM Object,这也是必选项。

 

抱歉!评论已关闭.