製品情報
技術情報
  簡単に使ってみましょう(Windows)
  簡単に使ってみましょう(UNIX)
  よくある質問 (FAQ)
  テクニカルノート
  製品比較
  用語集
  ネットワーク上でのソフトウェア開発
  インターファイル・ブランチング
  ソフトウェア構成管理の
高度な実践方法・・・
  変更管理を通じた製品品質の向上
  PERFORCE−SOFTUNE
連携運用ガイド (Rev1.02)[PDF]
ライセンス情報
テクニカルサポート
ソフトウェア ダウンロード
マニュアル ダウンロード









 
テクニカルノート028 HOME製品PERFORCE 技術情報ノート


トリガ
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: このトリガは常に失敗します!
より有意義なトリガの例は、パブリック・ディポを参照してください。


戻る