Clearcase,如何在没有提供评论时禁止登记

时间:2012-12-12 15:26:29

标签: triggers clearcase checkin

我花了几个小时在互联网上寻找一个解决方案,以便在开发者没有提供评论时弄清楚如何禁止签入操作。

我正在尝试编写preop checkin触发器,该触发器在每次检查之前触发,检查注释字段是否为空。

到目前为止,我只向用户管理了显示消息,但我找不到中断签入操作的方法。

在此先感谢,任何帮助将不胜感激。

编辑:安装触发器的命令如下:

mktrtype -element -all -preop checkin -exec <trigger_path> COMMENT_CONTROL

2 个答案:

答案 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}}