一旦我不使用clearfsimport,我的ci触发器就能正常工作。在clearfsimport的特例中。 ci触发器找不到该文件。
以下是我在触发器中构建文件名的方式:
my $filename = ( $ENV{'LOGNAME'} ? $ENV{'CLEARCASE_ROOT'} : '') . $ENV{'CLEARCASE_PN'};
对于这两种情况(cleartool ci和clearfsimport,文件名是文件的本地路径,即L:\VobName\Path\file.txt
。
我不知道两件事:
cleartool ci
但不适用于clearfsimport
修改
实际上,在调用CI触发器之前,某些程序或脚本似乎删除了相关文件。执行clearfsimport后,相关文件又回来了。这导致触发器无法打开文件,因为它丢失了。是否意味着CI触发器无法与clearfsimport
一起使用?
答案 0 :(得分:1)
clearfsimport
(which I use here导入文件)可能与经典ci的工作方式不同。
也许您可以尝试$ENV{'CLEARCASE_XPN'}
(extended pathname),看看您是否可以通过该方式访问该文件(除非您可能需要动态视图来访问扩展路径名引用的内容)。
答案 1 :(得分:1)
Clearfsimport或多或少地像" cleartool checkin-from"命令。
因此,您需要使用CLEARCASE_CI_FPN环境变量。
像这样的测试(使用Perl)应该可以工作:
$ccpn = $ENV{"CLEARCASE_PN"};
if (!(-e $ccpn))
{
$ccpn = $ENV{"CLEARCASE_CI_FPN"};
if (!(-e $ccpn))
{
printf("Cannot locate File being checked in!\n");
exit 1;
}
}
open( INFILE,"< $ccpn");
这可能不是处理它的最简单的方法,但导入的行为方式不同,因为当触发器触发时,该文件实际上还不在ClearCase存储库中。