我花了几个小时在互联网上寻找一个解决方案,以便在开发者没有提供评论时弄清楚如何禁止签入操作。
我正在尝试编写preop checkin触发器,该触发器在每次检查之前触发,检查注释字段是否为空。
到目前为止,我只向用户管理了显示消息,但我找不到中断签入操作的方法。
在此先感谢,任何帮助将不胜感激。
编辑:安装触发器的命令如下:
mktrtype -element -all -preop checkin -exec <trigger_path> COMMENT_CONTROL
答案 0 :(得分:1)
根据您使用的语言,返回非零返回码(即1
)应该可以解决问题。我已经多次编写这行Perl很多次,以使ClearCase触发器不允许进行操作。
exit 1;
每次都工作。
答案 1 :(得分:1)
首先,不要试图在mktrtype
命令中填写所有内容:您的触发器定义应该调用脚本(所有用户都可以访问),您可以在其中编写所需的所有检查。
你可以在这个preop checkin trigger中看到一个脚本示例,如果不满足某些条件,必须显示一条消息。
它基于错误功能:
########################################################################
# SUBROUTINE ERROR
#
sub error {
close(WORKFILE);
unlink($workFile);
my ($message) = @_;
die ($message."\nUnable to continue checkin ...\n");
}
在脚本的任何一点,你都会打电话:
&error("$message");
这会在向用户显示错误消息时停止签入。
它是脚本的一部分,您将使用以下命令声明为触发器:
cleartool mktrtype -c "RCS Keyword substitution in a source file" -element -all -preop checkin -eltype text_file -execwin "ccperl \\mw-ddiebolt\triggers\keyword_subst.perl" -execunix "Perl /net/titeuf/triggers/keyword_subst.perl" KEYWORD_SUBST
如果这太复杂了,this other script会像exit
一样使用sub checkUserName {
my $user = shift(@_);
my $currentUser = uc($ENV{CLEARCASE_USER});
if ($user !~ m/^($currentUser)/) {
`clearprompt proceed -mask proceed -type error -prompt \"Can't create label f
exit 1;
}
exit 0;
}
:
system("clearprompt proceed -mask proceed -type error -prompt \"$text\"");
exit 1;
这应该与你的相同:
{{1}}