Helix Coreサーバ管理者ガイド (2020.1)

トリガとコミットエッジ

このトピックでは、コミットエッジ構成で既存のトリガを管理する方法と、エッジタイプトリガの使用方法について説明します。

トリガの場所を判断する

分散Perforceサービスで、トリガはコミットサーバ上、エッジサーバ上、またはその両方で実行される場合があります。

すべての関連するトリガスクリプトとプログラムが適切に展開されていることを確認してください。 エッジサーバは、非エッジタイプのトリガに、以下のように影響を及ぼす場合があります。

  • トリガを含むポリシーを実行する場合、チェンジリストまたは保留トリガがコミットサーバとエッジサーバのどちらで実行されるべきか、検討してください。
  • エッジサーバは、ワークスペースやいくつかのタイプのラベルにフォームトリガを実行します。
ヒント

エッジサーバのサブミット時に実行される一連のトリガについては、サポートナレッジベースの記事「分散Perforce環境におけるトリガ」を参照してください。

トリガスクリプトは、以下の表に示されているトリガ変数を使用して、それらがコミットサーバとエッジサーバのどちらで実行されているか判別します。 トリガがコミットサーバで実行されている場合、%peerip%%clientip%と一致します。

トリガ変数 説明

%peerip%

プロキシ、ブローカ、レプリカ、またはエッジサーバのIPアドレス。

%clientip%

プロキシ、ブローカ、レプリカ、またはエッジサーバのどれを通じて接続しているかにかかわらず、コマンドを起動したユーザが使用するマシンのIPアドレス。

%submitserverid%

分散インストール中のchange-submitchange-contentchange-commitトリガに対して、サブミットを実行したエッジサーバのserver.id。 詳細については、『Helix Core P4コマンドリファレンス』のp4 serveridを参照してください。

エッジトリガを利用する

さらに、エッジサーバはエッジコミットアーキテクチャに固有のedge-submitedge-contentの2つのトリガタイプをサポートしています。

トリガタイプ 説明

edge-submit

チェンジリストの作成後、クライアントからエッジサーバへのファイル転送の前にエッジサーバのサブミット前トリガを実行します。 この時点では、ファイルがロックされている必要はありません。

edge-content

クライアントからエッジサーバへのファイル転送後、エッジサーバからコミットサーバへのファイル転送の前にエッジサーバのサブミット中トリガを実行します。 この時点で、チェンジリストは保留されます。

エッジサーバのトリガは、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%"