我设置了一个trigger,就是在mkproject的时候,触发一个perl脚本,连到cq里修改ucm_project 的group字段。但是总是出错。
可能是
$pjName="$ENV{CLEARCASE_PROJECT}";
有问题。
脚本如下:
use Env;
use Net::SMTP;
$mailserver="192.168.3.1"; #domain name or ip address
$userName="$ENV{\"CLEARCASE_USER\"}";
$pjName="$ENV{CLEARCASE_PROJECT}";
my @temp=split('@',$pjName);
$pjName=join('@',@temp);
print "$pjName\n";
use CQPerlExt;
use Env;
$CQsession= CQPerlExt::CQSession_Build();
$CQsession->UserLogon("admin","","job","7.0.0");
$objtoedit = $CQsession->GetEntity("ucm_project", $pjName);
$CQsession->EditEntity($objtoedit,"modify");
$operator=$objtoedit->SetFieldValue("group2",$pjName);
my $status = $objtoedit->Validate();
if ($status == "")
{ $objtoedit->Commit();
}
else { $objtoedit->Revert(); }
其中$pjName="$ENV{CLEARCASE_PROJECT}";
my @temp=split('@',$pjName);
$pjName=join('@',@temp);
print "$pjName\n"; 是取字符串的@之前的部分。
但是执行cleartool mkproject -modcomp component:WebRoot@\firstvob -policy POLICY_DELIVER_REQUIRE_REBASE,POLICY_DELIVER_NCO_DEVSTR -model DEFAULT -crmenable job -connection 7.0.0 -in folder:RootFolder@\firstvob project:ddrdd@\firstvob后出错。
错误如下:
ddrdd@\firstvob
从 ClearQuest 数据库检索信息时检测到错误。
正在引用不存在的对象:
对象类型:Entity
对象:记录类型“UCM_Project”的“ddrdd@\firstvob”
检测到该错误的位置:ClearQuest Core:adentitymgr.cpp:760
建议:如果不能确定如何解决此问题,请联系 Rational 支持,并提供以上所有信息以及消
息出现的环境的描述。 at C:/Program Files/Rational/Common/lib/perl5/site_perl/5.8
.6/CQPerlExt.pm line 43.
cleartool: Warning: Trigger script for "group" returned failed exit status
Created project "ddrdd".
Changed modifiable component list for project "ddrdd".
Updated policies on project "ddrdd".
可以看到ddrdd@\firstvob已经取到了。
如果单独执行ccperl group.pl,给$pjName="$ENV{CLEARCASE_PROJECT}"赋值
ddrdd@\firstvob则可以通过,不会出错。