








|
|
 |

トリガ
PERFORCE でのトリガの使用
このテクニカルノートでは、トリガの動作方法を簡単に説明し、よくみられる用法上の問題点を示します。トリガに関する詳細な説明は、『PERFORCE システム管理者ガイド』にあります。
PERFORCE トリガは「スーパーユーザ」定義の規則で、特定のクライアント操作が実行されるたびに、それに特化したスクリプトを起動します。トリガは以下の2つの種類に分けられます。
チェンジリスト・サブミット・トリガはさらに、サブミット・トリガ、コンテンツ・トリガ、コミット・トリガ に識別されます。チェンジリスト・サブミット・トリガは、主に以下のような場合に使用されます。
- バグ番号が必須、などの条件でチェンジの説明にあるテキストを検証する場合
- 関連するファイルを一緒にサブミットする必要がある場合
- チェンジリストのサブミット成功後にビルド処理を開始する場合
- 特定のブランチに対するすべてのサブミットにより、少なくとも1つのジョブが解決されるようにする場合
仕様トリガも、セーブ・トリガ、アウト・トリガ、イン・トリガ、デリート・トリガとして識別することができます。仕様トリガの使用に適した処理の例は以下のとおりです。
- 仕様を検証する場合
- PERFORCE 仕様のカスタマイズ版を作成する場合
- 仕様が変更または削除されることを他のユーザに通知する場合
トリガの例については、パブリック・ディポを参照してください。

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

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

エラー出力を生成する
トリガ・スクリプト・コマンドが失敗すると、そのコマンドの標準出力(エラー出力ではない)がトリガ失敗のエラーメッセージのテキストとして使用されます。
ただし、失敗したコマンドのすべてがエラーメッセージを生成するわけではありません。トリガが失敗した場合にデフォルトのエラー出力を表示する場合、コマンド失敗時にエラーメッセージが発行されないか、標準出力(STDOUT)にメッセージが書き出されません。ユーザが情報を得られるようにするには、トリガ・スクリプト自身が STDOUT にエラーを書き出さなければなりません。
エラー出力をキャプチャするには、偽のコマンドを実行して強制的に「失敗」の終了コードを得る必要がある可能性があります。
以下に簡単なトリガの例を示します。このトリガは常に成功するため、このトリガからの出力は表示されません。
triggerTest sumbit //depot/... "@echo Always succeeds."
ここで、いくつかのコマンドをバッチファイルに入れて、失敗トリガがどのように出力を生成するか調べましょう。 以下のトリガを使用します。
triggerTest2 submit //depot/... "d:\perforce\triggers\fail.bat"
"fail.bat" の内容は以下のとおりです。
@echo off
boguscommand
このトリガが起動すると、以下のような出力が表示されます。
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: エラーメッセージなし
ユーザにエラーメッセージを表示するには、失敗したコマンドを実行する前に、STDOUT に書き込む必要があります。 例:
@echo off
echo このトリガは常に失敗します!
boguscommand
こうすると、変更した "fail.bat" スクリプトによりユーザにエラーメッセージが表示されます。
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: このトリガは常に失敗します!
より有意義なトリガの例は、パブリック・ディポを参照してください。
|
|