機械制御/振動騒音
IR情報 会社情報

PERFORCEテクニカルノート028

image_toyo_ss_img_perforce_title_perforce.gif.gif
テクニカルノート028  
image_toyo_ss_img_all_line_yellow.gif.gif

トリガ
PERFORCE でのトリガの使用
image_toyo_common_spacer.gif.gif
このテクニカルノートでは、トリガの動作方法を簡単に説明し、よくみられる用法上の問題点を示します。トリガに関する詳細な説明は、『PERFORCE システム管理者ガイド』にあります。
image_toyo_common_spacer.gif.gif
PERFORCE トリガは「スーパーユーザ」定義の規則で、特定のクライアント操作が実行されるたびに、それに特化したスクリプトを起動します。トリガは以下の2つの種類に分けられます。
image_toyo_common_spacer.gif.gif
チェンジリスト・サブミット・トリガ
仕様トリガ

image_toyo_common_spacer.gif.gif
チェンジリスト・サブミット・トリガはさらに、サブミット・トリガ、コンテンツ・トリガ、コミット・トリガ に識別されます。チェンジリスト・サブミット・トリガは、主に以下のような場合に使用されます。
image_toyo_common_spacer.gif.gif
バグ番号が必須、などの条件でチェンジの説明にあるテキストを検証する場合
関連するファイルを一緒にサブミットする必要がある場合
チェンジリストのサブミット成功後にビルド処理を開始する場合
特定のブランチに対するすべてのサブミットにより、少なくとも1つのジョブが解決されるようにする場合

image_toyo_common_spacer.gif.gif
仕様トリガも、セーブ・トリガ、アウト・トリガ、イン・トリガ、デリート・トリガとして識別することができます。仕様トリガの使用に適した処理の例は以下のとおりです。
image_toyo_common_spacer.gif.gif
仕様を検証する場合
PERFORCE 仕様のカスタマイズ版を作成する場合
仕様が変更または削除されることを他のユーザに通知する場合

image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_line_dot_526.gif.gif
トリガのデバッグの基本手順
image_toyo_common_spacer.gif.gif
最初にトリガ・スクリプトがPERFORCE のコンテキスト外で正しく動作することを確認します。この手順は必須です。
image_toyo_common_spacer.gif.gif
トリガ・スクリプトが PERFORCE の外部で稼動しているが、PERFORCE トリガとして呼び出されると失敗する場合、次のことをチェックしてください。
image_toyo_common_spacer.gif.gif
"p4 triggers" フォームにおいて、
image_toyo_common_spacer.gif.gif
トリガ・スクリプトへのフルパス名が指定されていますか?
呼び出し元プログラム(例えば perl.exe)へのフルパス名が指定されますか?
トリガ・フォームには、同じ名前の2つのトリガがありますか?

image_toyo_common_spacer.gif.gif
トリガ・スクリプトにおいて、
image_toyo_common_spacer.gif.gif
  • 環境変数は正しいですか?

    image_toyo_common_spacer.gif.gif
    トリガ・スクリプトでは通常、すべての PERFORCE コマンドに対する PERFORCE ユーザ、クライアント仕様、およびパスワードを指定する必要があります。
    image_toyo_common_spacer.gif.gif

    image_toyo_common_spacer.gif.gif
    image_toyo_ss_img_all_line_dot_526.gif.gif
    Windows NT/2000 のサービスのための特別な注意点
    image_toyo_common_spacer.gif.gif
    Windows サービスとして PERFORCE を起動する場合、デフォルトでは PERFORCEはネットワーク・ドライブへのアクセス権限を持っていない LocalSystemユーザとして実行されることに注意してください。作成したトリガがネットワーク・ドライブへのアクセス権限を必要とする場合、ネットワーク権限を持つユー ザとして PERFORCE サービスを起動してください。そうしなければ、そのようなトリガは失敗します。
    image_toyo_common_spacer.gif.gif
    image_toyo_ss_img_all_line_dot_526.gif.gif

    image_toyo_common_spacer.gif.gif
    エラー出力を生成する
    image_toyo_common_spacer.gif.gif
    トリガ・スクリプト・コマンドが失敗すると、そのコマンドの標準出力(エラー出力ではない)がトリガ失敗のエラーメッセージのテキストとして使用されます。
    image_toyo_common_spacer.gif.gif
    ただし、失敗したコマンドのすべてがエラーメッセージを生成するわけではありません。トリガが失敗した場合にデフォルトのエラー出力を表示する場合、コマ ンド失敗時にエラーメッセージが発行されないか、標準出力(STDOUT)にメッセージが書き出されません。ユーザが情報を得られるようにするには、トリ ガ・スクリプト自身が STDOUT にエラーを書き出さなければなりません。エラー出力をキャプチャするには、偽のコマンドを実行して強制的に「失敗」の終了コードを得る必要がある可能性があります。
    image_toyo_common_spacer.gif.gif
    以下に簡単なトリガの例を示します。このトリガは常に成功するため、このトリガからの出力は表示されません。
    image_toyo_common_spacer.gif.gif
    triggerTest sumbit //depot/... "@echo Always succeeds."

    image_toyo_common_spacer.gif.gif
    ここで、いくつかのコマンドをバッチファイルに入れて、失敗トリガがどのように出力を生成するか調べましょう。 以下のトリガを使用します。
    image_toyo_common_spacer.gif.gif
    triggerTest2 submit //depot/... "d:\perforce\triggers\fail.bat"

    image_toyo_common_spacer.gif.gif
    "fail.bat" の内容は以下のとおりです。
    image_toyo_common_spacer.gif.gif
    @echo off
    boguscommand

    image_toyo_common_spacer.gif.gif
    このトリガが起動すると、以下のような出力が表示されます。
    image_toyo_common_spacer.gif.gif
    Change 1850 created with 1 open file(s).
    Submitting change 1850.
    Locking 1 files ...
    Submit validation failed -- fix problems then use 'p4 submit -c 1850'.
    Submit check 'triggerTest2' failed: エラーメッセージなし

    image_toyo_common_spacer.gif.gif
    ユーザにエラーメッセージを表示するには、失敗したコマンドを実行する前に、STDOUT に書き込む必要があります。 例:
    image_toyo_common_spacer.gif.gif
    @echo off
    echo このトリガは常に失敗します!
    boguscommand

    image_toyo_common_spacer.gif.gif
    こうすると、変更した "fail.bat" スクリプトによりユーザにエラーメッセージが表示されます。
    image_toyo_common_spacer.gif.gif
    Change 1851 created with 1 open file(s).
    Submitting change 1851.
    Locking 1 files ...
    Submit validation failed -- fix problems then use 'p4 submit -c 1851'.
    Submit check 'triggerTest2' failed: このトリガは常に失敗します!

    image_toyo_common_spacer.gif.gif

    image_toyo_common_spacer.gif.gif
    image_toyo_ss_img_all_btn_yellow_bgwhite2.gif.gif戻る

PAGE TOP