Rational ClearCase ベスト10トリガー

最終回 「統合トリガー(後編)・まとめ」

Comments

統合トリガー

10. スティッキー・ビット

UNIX(または最低でもSolaris)上のディレクトリに対するグループにスティッキー・ビットを施すと、内部で作成された全ファイルに対して、同じグループとディレクトリがプライマリ・グループとして設定されます。 私は、ClearCaseにも同じような機能を追加するよう要請しました。ClearCaseにもスティッキー・ビット・オプションが備わっているからです。UNIXでのような出力が得られれば良いと思ったのです。

あいにく、期待した結果が得られなかったため、同機能をシミュレートするトリガーを記述しなければなりませんでした。

新規ディレクトリの作成時にグループ割り当てを要求することができるため、プロセスの初期段階でこの問題を処理することにしました。 私のソリューションは以下の通りです。

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

トリガーのインストール:
cleartool mktrtype -c "Sticky bit behaviour for directories" 
-element -all -postop mkelem -execwin "ccperl 
\\mw-ddiebolt\triggers\stickybit.bat" STICKYBIT
トリガー・スクリプト:
@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


#
# Fixed variable
#

$COMPUTERNAME           = $ENV{COMPUTERNAME};
$S                      = "\\";
$group_choosed          = "c:".$S."temp".$S."group_choosed";


#
# Configuration Variables
#

$VOB            = $ENV{CLEARCASE_VOB_PN};
$dir            = $ENV{CLEARCASE_PN};
$filename       = $ENV{CLEARCASE_PN};
$element_type   = $ENV{CLEARCASE_ELTYPE};

#printf("stickybit.bat : $VOB $dir $filename 
                         $element_type \n");

if ($element_type eq "directory")
   {
   $list_group = `cleartool describe -long VOB:$VOB | 
    findstr group`;
   $list_group =~ s/Additional groups:\n//g;
   $list_group =~ s/group //g;
   $list_group =~ s/ //g;
   $list_group =~ s/\n/,/g;

        $status = system("clearprompt list -outfile 
        $group_choosed -items 
$list_group -prompt \"Choose a group\" -prefer_gui");
        if ($status != 0)
                {
                exit $status;
                }
        $group  = `cmd /c type $group_choosed`;
        chop $group;
        $status = `del $group_choosed`;

#       printf("cleartool protect -chgrp $group 
        $dir\n");
        if (!($group eq ""))
                {
                $status = system("cleartool protect 
                          -chgrp $group \"$dir\"\n");
                }
        exit $status;
        }
else
        {
        $group = `cleartool describe -fmt \"%Gu\" .`;

#       printf("cleartool protect -chgrp \"$group\" 
        $filename\n");

        $status = system("cleartool protect -chgrp
		          \"$group\" \"$filename\"\n");
        exit $status;
        }
fi

# End of Perl section

__END__
:endofperl

使用法

新規ディレクトリ・エレメントが作成されると、次のようなダイアログ・ボックスが表示されます。

図1:これで、グループ割り当てを自動的に実行できます。
これで、グループ割り当てを自動的に実行できます
これで、グループ割り当てを自動的に実行できます

その後、このグループが属する新規ディレクトリを保護するため、VOBグループ・リストからグループを選択しなければなりません。 “Abort”を選択した場合や、グループを選択しなかった場合は、プライマリ・グループがデフォルト(またはCLEARCASE_PRIMARY_GROUP設定)に設定されます。

作成された新規エレメントは、ディレクトリ・グループに自動的に割り当てられます。

未解決の問題

このトリガー・スクリプトには、以下のような問題があります。

  • Windowsでのみ動作(テスト済み)します。
  • このトリガーではfindstrを使用していますが、UNIXの場合grepに置き換える必要があります。
  • グループ名にはスペースを使用できません。
  • 選択したグループにユーザーが属していなければなりません。

まとめ

ソフトウェア構成管理者は、これらの10種類のトリガーを使用することにより、以下のタスクに関する柔軟性と管理を向上させることができます。

  • 権限の処理
  • 命名規則 / プロセス規則の処理
  • 自動通知や公開など特殊なユーザー要求

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


関連トピック


コメント

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

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