Rational ClearCase ベスト10トリガー

第2回 「操作後トリガー(後編)」

Comments

操作後トリガー

5.ビット・セットの実行

\\\\\[Daniel Mencnarowski 氏に感謝します\\\\\]

ClearCase でバージョン管理を行っているエレメントには、POSIX 形式によるビット権限があります。たとえば、各ファイルには、ユーザー、グループ、その他に対応したrwxrwxrwx 形式の権限セットがあります。

したがって、エレメントを実行するには、「実行ビット」という特殊なビットを設定する必要があります。

Windows の場合、.exe、.com、.bat、.dll、および.cmd エレメントに、この実行ビット・セットが必 要です。

このタスクを実行するトリガーは、mkelem を介して容易に設定できます。

トリガーのインストール / トリガー・スクリプト】

トリガーのインストール・コマンド:
cleartool mktrtype -c "Put execute bits for elements" 
-element -all -postop mkelem -execwin 
"ccperl \\mw-ddiebolt\triggers\executebit.bat" 
EXECUTEBIT
スクリプト:
@rem= 'PERL for Windows NT - ccperl must be in search path
@echo off
ccperl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
@rem ';
###########################################
# Begin of Perl section
$file = $ENV{CLEARCASE_PN};
$lowerfile = lc($file);
#printf("executebit.bat : $lowerfile...\n");
if (($lowerfile =~ /.exe$/) || # Executable
($lowerfile =~ /.com$/) || # COM files
($lowerfile =~ /.cmd$/) || # Old dos CMD files
($lowerfile =~ /.bat$/) || # Batch files
($lowerfile =~ /.dll$/)) # Dll's need the bit also
{
# printf("Putting execute bits...\n");
$status = system("cleartool protect -chmod +x \"$file\"");
}
# End of Perl section
__END__
:endofperl

【使用法】

新規エレメントの作成後、トリガーは無効になり、エレメントの拡張子が.exe、.com、.cmd、.bat、または.dll である場合にのみ、保護が変更されます。

例:
Z:\rdn>cleartool mkelem test.bat
Creation comments for "test.bat":
This is a test
.
Changed protection on "\rdn\.\test.bat".
Created element "test.bat" (type "text_file").
Checked out "test.bat" from version "\main\0".
Z:\rdn>cleartool des test.bat@@
file element "test.bat@@"
created 03-juil.-02.10:53:29 by ddiebolt.staff@mw-ddiebolt
"This is a test"
element type: text_file
Protection:
User : SWITZERLAND\ddiebolt : r-x
Group: SWITZERLAND\staff : r-x
Other: : r-x
source pool: sdft cleartext pool: cdft
Z:\rdn>

6.net send でコーヒーを注文

水曜日も午後遅く、1日中ClearCaseのインプリメンテーションや説明を行っていたので、皆そろそろ疲れてきました。 誰かがジョークで、「ClearCase にはコーヒーは入れられないのか」と尋ねました。 私は「できるとも」と応えました。ファイルのチェックアウト時、ClearCase から秘書にメッセージを送信して、コーヒーを注文できるのです。 【トリガーのインストール / トリガー・スクリプト】

トリガーの作成コマンド:
cleartool mktrtype -c "Get some coffee trigger"
-element -all -postop checkout -execwin "ccperl \\mw-ddiebolt\triggers\netsend.bat" COFFEE
トリガー・スクリプト:
@rem= 'PERL for Windows NT - ccperl must be in search path
@echo off
ccperl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
@rem ';
###########################################
# Begin of Perl section
#
# Configuration Variables
#
#use strict;
if ($ENV{TEMP})
{
$TDIR=$ENV{TEMP};
}
else
{
$TDIR="c:${S}temp";
}
$S = "\\";
$JUNK = $TDIR . $S . "junk";
$coffee_choosed = "c:".$S."temp".$S."coffee_choosed";
$LIST_COMPUTER 
 = "\\\\mw-ddiebolt\\triggers\\list_computers.txt";
$CLEARCASE_XPN = $ENV{CLEARCASE_XPN};
$CLEARCASE_USER = $ENV{CLEARCASE_USER};
$CLEARCASE_COMMENT = $ENV{CLEARCASE_COMMENT};
$status 
 = system("clearprompt list -outfile $coffee_choosed -items 
 \"dark coffee\",\"tea\",\"chocolate\" -prompt \"Choose 
 a coffee\"
-prefer_gui");
if ($status != 0)
{
exit $status;
}
$coffee = `cmd /c type $coffee_choosed`;
chop $coffee;
$status = `del $coffee_choosed`;
$MESSAGE = "$CLEARCASE_USER : The $CLEARCASE_XPN file was 
checked out. Please bring
$coffee !!!";
open(COMPUTER,$LIST_COMPUTER);
while ($computer=<COMPUTER>)
{
chop $computer;
printf("Echo Processing computer : $computer \n");
$command="net send $computer \" $MESSAGE \" > NUL 2> NUL";
$status = system($command);
}
close(COMPUTER);
# End of Perl section
__END__
:endofperl
list_computer.txt の例:
mw-ddiebolt

【使用法】 ファイルのチェックアウト中、次のメッセージが表示されます。

図1:メニュー・ダイアグラム

飲み物を選択すると、次のメッセージが秘書宛てに送信されます。

図2:このトリガーを使用する場合は、アドレスを変更してください。

操作前トリガー

ClearCase の使用法に関して、特定の規則やスタイルを強制することが望ましい場合があります。このような場合は、操作前に実行されるトリガーを設定することで、ClearCase の全ユーザーがこの規則に従うようにすることができます。次の例は、新しく作成されたラベル名が一定の規則に従っていることを確認するためのトリガーです。

7.ラベル名の規則

\\\\\[この素晴らしいアイデアを教えてくれたSchindler Lift と
Beat Arnold に感謝します。\\\\\]

ClearCase によるソフトウェア構成管理を始めてから数ヵ月もすると、VOB データベースには多数のラベルが保存されています。

ラベル名が一貫して、常にきちんと保たれているとは限りません。多くの場合、REL1、RELEASE_1、またはREL_1.0 のように、同じ名前の「概念的な」バリエーションが使用されます。

常にトリガーを使用して、ラベル名の規則を確認するのは良い方策です。同じガイドラインに従うことを義務づけることにより、プロジェクトのラベル付けをより効率良く管理できます。

トリガーのインストール / トリガー・スクリプト】

トリガーのインストール・コマンド:
cleartool mktrtype -c "Trigger to check label naming" 
-type -preop mktype -lbtype -all-execwin "ccperl 
\\mw-ddiebolt\triggers\test_label_name.bat" -execunix "Perl
/net/titeuf/triggers/test_label_name.pl" CHECK_LABEL_NAME
トリガー・スクリプト:
@rem= 'PERL for Windows NT - ccperl must be in search path
@echo off
ccperl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
@rem ';
###########################################
# Begin of Perl section
#
# Configuration Variables
#
my $USERPREFIX = 'USER';
my $BUGPREFIX = 'BUG';
my $RELPREFIX = 'REL';
#######################################
#
# function definition
#
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;
}
####################################################
#
# main section
#
{
my $label = $ENV{CLEARCASE_LBTYPE};
my $prefix;
my $KAno;
my $project;
my $version;
my $stream;
# check, if label is in uppercase format
if ($label ne uc($label)) {
`clearprompt proceed -mask proceed -type error -prompt 
\"CCFS: Label not in u
exit 1;
}
# decompose label
if ($label =~ m/^($USERPREFIX)_(.*)_(.*)$/)
{
&checkUserName($2);
} elsif ($label =~ m/^($BUGPREFIX)_(.*)$/)
{
exit 0;
}
elsif ($label =~ m/^($RELPREFIX)_(.*)$/)
{
exit 0;
}
{
# no valid prefix found
`clearprompt proceed -mask proceed -type error -prompt 
\"No valid Label speci
exit 1;
}
}
# End of Perl section
__END__
:endofperl

このスクリプトで、ラベル名が正しく付けられていること(大文字で、USER、BUG またはREL のいずれか始まる)を確認します。

【使用法】

このトリガーで作成できるのは、以下のフォーマットのみです。
USER_<userlogin>_<something>
REL_<something>
BUG_<something>

新規ラベルが名前付けの規則に従っていない場合、次のエラー・メッセージが表示されます。

図3:名前付けの規則に従うことを穏やかに促すメッセージです。

以上で、第2回は終了です。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Rational
ArticleID=312348
ArticleTitle=Rational ClearCase ベスト10トリガー
publish-date=11222006