プッシュまたはフェッチのトリガ
p4 pushおよびp4 fetchはPerforce専用の分散バージョン管理システム(DVCS)に固有のコマンドです。 『分散バージョニング環境におけるHelixの使用方法』を参照してください。
サブミットまたはプッシュプロセスの実行中にトリガを実行することは、必須ではありません。
p4 push
、p4
unzip
、またはp4 fetch
コマンドが実行されたときにHelixサーバがトリガスクリプトを実行するよう設定するには、プッシュトリガ(push-submit
、push-content
およびpush-commit
タイプのトリガなど)を使用します。
このセクションでは、Perforce DVCSでのプッシュやフェッチの開始時に使用できるトリガについて説明します。
プッシュされたアイテムを受け取ったり、フェッチ要求に応答したりするサーバが使用できるトリガについては、「プッシュコマンドおよびフェッチコマンド用のその他のトリガ」を参照してください。
p4 submitとp4 pushの類似点
プッシュ中、ローカルサーバは共有サーバのクライアントとして動作します。 このため、サブミットとプッシュの処理には類似点があります。
- プッシュの動作は不可分です。すべてがプッシュされるか、何もプッシュされません。
- プッシュは3つの異なるフェーズで発生し、プッシュトリガのタイプはそれぞれのフェーズに対応しています。
以下の図は:
- サブミットとプッシュの類似点を示しています
- クライアントからチェンジリストを経由してローカルサーバに送信され、最終的に共有サーバに送信されるサブミットファイルの経路を示しています
- プロセスの各フェーズで実行されるトリガの種類をすべて示しています
変更トリガとプッシュトリガ
サブミットおよびプッシュの3つのフェーズは次の内容を含んでいます。
-
メタデータの送信フェーズでメタデータが送信されます。
このフェーズに続いて、change-submitまたはpush-submitトリガが、ユーザが操作の実行を許可されているか、ファイルタイプは適切であるかなどを確認します。 メタデータに対してクエリを実行するすべてのトリガが実行可能です。
-
ファイルの送信 フェーズでファイルが送信されます。変更はまだコミットされません。
このフェーズに続いて、
content-submit
またはpush-submit
トリガはファイルの内容を解析し、検出されたものに従って適切な動作を行います。 このフェーズでは、サブミットされたファイルがコーディング規約やその他のポリシーに従っているかどうかを調べることがあります。 -
コミット。 フェーズで変更がコミットされます。
このフェーズの後はコミットは取り消すことができませんが、トリガは通知の送信、クリーンアップなどのいくつかの操作を行うことができます。
p4 submitとp4 pushの相違点
サブミットとプッシュの相違点としては、以下のようなことが挙げられます。
- サブミットとプッシュはともに不可分ですが、サブミットには単一のチェンジリストが含まれ、プッシュには複数のチェンジリストが含まれることがあります。 そのため、プッシュの失敗の損失はサブミットよりも大きくなります。
- サブミットは一方向ですが、
- プッシュは双方向です(プッシュは、
p4 push
、p4 fetch
、またはp4 unzip
の結果として実行されます)。 トリガを起動するコマンドに応じて、ローカルサーバまたは共有サーバがクライアントとして機能することがあります。 - プッシュの最初のフェーズでメタデータがメモリに読み込まれますが、これにより、
push-commit
トリガがアクセスできるデータが制限されます。 各push-commit
トリガは、専用のメモリを持つ個別のプロセスです。 詳細については、「Push-submitトリガ」を参照してください。 - サブミットが失敗すると、変更および再試行が可能な作業中の状態になります。 プッシュ操作が失敗した場合は、ローカルサーバへのサブミットの前から操作をやり直す必要があります。 このため、可能な場合はプッシュ操作ではなくサブミット操作の間にトリガを実行することが推奨されます。
- チェンジトリガが関係するのは、
p4 submit
コマンドを処理する場合のみです。 プッシュトリガは、p4 push
コマンド、p4 fetch
コマンド、またはp4 unzip
コマンドを実行した場合に起動します。
トリガの定義またはどの段階でトリガを実行するかを決めるにあたって、これらの違いを考慮してください。
p4 pushトリガのフィールド
以下の表では、プッシュトリガに関するフィールドについて説明します。 サンプルの定義に関しては、プッシュトリガの各タイプについて説明している後続のセクションを参照してください。
フィールド | 意味 |
---|---|
|
プッシュトリガの名前。 |
|
|
|
ディポシンタックスのファイルパターンです。
|
|
このHelixサーバ向けトリガは、ユーザが トリガスクリプトがディポに保存されている場合、ディポシンタックス内でそのパスをパーセントで囲んで指定する必要があります。 例えば、スクリプトがディポに
|
push-submit
トリガスクリプトまたはpush-content
トリガスクリプトが成功した場合であっても、後続のトリガの失敗などの原因により、トリガを起動したサブミットが失敗する可能性があります。 push-submit
トリガとpush-content
トリガは、検証目的以外では使用しないでください。また、push-commit
トリガは、プッシュやフェッチが正常に完了した場合に実行される操作に対して使用してください。