1

私は何時間も費やして、開発者からコメントが提供されていないときにチェックイン操作を禁止する方法を見つけるためにインターネットで解決策を探しました。

コメントフィールドが空かどうかをチェックするすべてのチェックインの前にトリガーされるpreopチェックイントリガーを作成しようとしています。

これまで、ユーザーへのメッセージの表示のみを管理してきましたが、チェックイン操作を中断する方法が見つかりませんでした。

よろしくお願いします。

編集:次のようにトリガーをインストールするためのコマンド:

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

4

2 に答える 2

1

使用している言語によっては、ゼロ以外のリターンコード(つまり1)を返すことでうまくいくはずです。私はこのPerlの行を何度も作成して、ClearCaseトリガーで操作を続行できないようにしました。

exit 1;

毎回働いた。

于 2012-12-12T15:33:37.890 に答える
1

まず、コマンド内のすべてを詰め込もうとしないでくださいmktrtype。トリガー定義は、必要なすべてのチェックをプログラムできるスクリプト(すべてのユーザーがアクセス可能)を呼び出す必要があります。

このpreopチェックイントリガーで、特定の条件が満たされない場合に停止メッセージを表示する必要があるスクリプトの例を見ることができます。

これは、エラー関数に基づいています。

########################################################################
# 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

これが高度すぎる場合、この他のスクリプト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;
于 2012-12-12T15:51:28.343 に答える