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

ClearCase Trigger指南(4)-Trigger可以做什么

2013年09月12日 ⁄ 综合 ⁄ 共 1763字 ⁄ 字号 评论关闭

声明:本文欢迎非商业用途转载,如果象某些网站对用户收费则谢绝转载,如若转载,请标明转载,原作者与出处,不要象我以前的一些文章,有人直接当做自己写的发表去赚稿费了

Trigger可以做什么?

所有的刚接触ClearCase的用户一般都认为Trigger是执行一个程序,实际并不是如此,这里我们给出一个例子,Trigger也可以执行一些ClearCase操作,如mklabelmkattr等:

cleartool mktrtype -element -postop checkin –mklabel Release$Rel_num / -c "Check in Make Label" Checkin_mklabel

这个Trigger的作用是当Checkin操作之后,Element有新的版本产生时,打上label。需要注意,在环境变更中要有Rel_num的值,如果Rel_num11,则在VOB中已定义了Label typeRelease11,否则不会打上label

Cleartool mktrtype的参数中有一组是定义Trigger的动作的:

1.        –exec command 执行指定的命令,如果命令是带参数的,则要将整个命令用单引号括起来,在这里定义的命令在所有的操作系统平台都有效,为了避免出现由于操作系统不兼容而造成Trigger失败,建议应用-exec command定义的命令中只使用ClearCase提供的命令与cleartool的子命令,不要使用UNIX的命令或Windows的命令,如lsdir等;如果想要自己写一些应用脚本,则要保证在WindowsUNIX平台都可以执行。

2.        –execunix command  这里定义的命令只能在UNIX系统下有效,除了ClearCase的命令与子命令外,建议使用Shell脚本或Perl脚本。

3.        –execwin command 应用execwin 定义的操作只在Windows系统下有效,除了ClearCase的命令与子命令外,建议使用Perl脚本或VB脚本;在这里有一点要特别提醒注意的,如果在命令或脚本中应用了Windows的内置命令如dircd等,则要应用cmd /c,如下所示:

Cleartool mktrtype –element –postop checkin –execwin “cmd /c  copy %CLEARCASE_PN% //Bakckup/.” -nc

4.        –mklabel label 给当前的elementtype等打上label,但是要求label必须已经定义了,所以建议在之前可以预定义一些label

5.        –mkattr attribute 给当前的elementstreamcomponent关联相应的attribute并赋值。

6.        mkhlink hlink 在引起Trigger操作相对应的element上执行mkhlink操作,可以应用tofrom选项选择link的方向。

在第二节中讨论Trigger的优缺点时提到了针对同一个elementucmobjecttype操作可以定义多个trigger,一般情况下你可以看一下这个element的属性,在Windows环境下Trigger会按在属性中的顺序执行,但是在ClearCase文档提到不能保证执行顺序,所以尽量避免在一个element的同一操作的同一类型上关联多个Trigger。一般建议如果需要处理则将所有的Trigger并到一个Trigger中。

在以上的六项操作是非互斥的,但是需要注意mklabelmkattrmkhlink只支持事前触发类型的Trigger,即只有-postopTrigger可以执行这几项操作。

最后有一个小技巧,当只定义了-execunix-execwin时,如果当前的操作系统不是UNIXWindows则默认为Trigger 失败,所以可以通过对checkincheckout等操作设定只执行UNIXWindows命令的Trigger来限制开发人员的开发平台,这样可以防止开发人员在不同开发平台的编译错误问题。

在创建完Trigger type后,一般需要执行cleartool mktrigger来进行关联。

 

抱歉!评论已关闭.