トリガとコミットエッジ
このトピックでは、コミットエッジ構成で既存のトリガを管理する方法と、エッジタイプトリガの使用方法について説明します。
トリガの場所を判断する
分散Perforceサービスで、トリガはコミットサーバ上、エッジサーバ上、またはその両方で実行される場合があります。
すべての関連するトリガスクリプトとプログラムが適切に展開されていることを確認してください。 エッジサーバは、非エッジタイプのトリガに、以下のように影響を及ぼす場合があります。
- トリガを含むポリシーを実行する場合、チェンジリストまたは保留トリガがコミットサーバとエッジサーバのどちらで実行されるべきか、検討してください。
- エッジサーバは、ワークスペースやいくつかのタイプのラベルにフォームトリガを実行します。
エッジサーバのサブミット時に実行される一連のトリガについては、サポートナレッジベースの記事「分散Perforce環境におけるトリガ」を参照してください。
トリガスクリプトは、以下の表に示されているトリガ変数を使用して、それらがコミットサーバとエッジサーバのどちらで実行されているか判別します。 トリガがコミットサーバで実行されている場合、%peerip%
が%clientip%
と一致します。
トリガ変数 | 説明 |
---|---|
|
プロキシ、ブローカ、レプリカ、またはエッジサーバのIPアドレス。 |
|
プロキシ、ブローカ、レプリカ、またはエッジサーバのどれを通じて接続しているかにかかわらず、コマンドを起動したユーザが使用するマシンのIPアドレス。 |
|
分散インストール中の |
エッジトリガを利用する
さらに、エッジサーバはエッジコミットアーキテクチャに固有のedge-submit
とedge-content
の2つのトリガタイプをサポートしています。
トリガタイプ | 説明 |
---|---|
|
チェンジリストの作成後、クライアントからエッジサーバへのファイル転送の前にエッジサーバのサブミット前トリガを実行します。 この時点では、ファイルがロックされている必要はありません。 |
|
クライアントからエッジサーバへのファイル転送後、エッジサーバからコミットサーバへのファイル転送の前にエッジサーバのサブミット中トリガを実行します。 この時点で、チェンジリストは保留されます。 |
エッジサーバのトリガは、p4 submit -e
経由で実行される際に順番に実行されます。 p4 submit
では、edge-submit
トリガはチェンジリストが保留される直前に実行され、edge-content
トリガはチェンジリストが保留された直後に実行されます。
edge-submit
トリガは、ファイルがエッジサーバに転送される前に実行されるので、ファイルの内容にアクセスできません。
以下のedge-submit
トリガは、サブミットしたユーザが、変更のレビューと承認を受けていない場合に、チェンジリストを拒否するMS-DOSバッチファイルです。 このトリガは、//depot/qa
ブランチ内の少なくとも1つのファイルに影響するチェンジリストのサブミット試行に対してのみ起動します。
@echo off rem REMINDERS rem - If necessary, set Perforce environment vars or use config file rem - Set PATH or use full paths (C:\PROGRA~1\Perforce\p4.exe) rem - Use short pathnames for paths with spaces, or quotes rem - For troubleshooting, log output to file, for instance: rem - C:\PROGRA~1\Perforce\p4 info >> trigger.log if not x%1==x goto doit echo Usage is %0[change#] :doit p4 describe -s %1|findstr "Review Approved...\n\n\t" > nul if errorlevel 1 echo Your code has not been reviewed for changelist %1 p4 describe -s %1|findstr "Review Approved...\n\n\t" > nul
トリガを使用するには、次の行をトリガテーブルに追加します。
sampleEdge edge-submit //depot/qa/... "reviewcheck.bat %changelist%"