通知
このセクションでは、通知用として設定可能な構成可能変数について説明します。
構成情報を変更しても、構成キャッシュを再ロードしない限り、その構成情報がSwarmで使用されることはありません。構成キャッシュを再ロードすると、変更した構成情報がSwarmで強制的に使用されます。Swarm構成キャッシュを再ロードするには、admin ユーザまたはsuper ユーザでなくてはなりません。[ユーザID]ドロップダウンメニューに移動して[システム情報]を選択し、[キャッシュ情報]タブをクリックしてから[構成の再ロード]ボタンボタンをクリックします。
Swarmを構成して、Helixサーバでコミットされた変更に関する一般的な通知を指定することができます。その場合の役割は、レビューデーモン サブミットされたチェンジリストがないかどうかについて、Helixサーバマシンを定期的に確認するプログラム。チェンジリストがサブミットされていた場合、デーモンは、そのチェンジリストに含まれるファイルをサブスクライブしているユーザに電子メールメッセージを送信し、関係するファイルの変更について通知します。になります。
通知構成は、SWARM_ROOT/data/config.php
ファイルのnotifications
ブロックで、以下の例のように指定します(デフォルトの場合を示しています)。
<?php
// this block should be a peer of 'p4'
'notifications' => array(
'honor_p4_reviews' => false, // defaults to false
'opt_in_review_path' => '', // required if honor_p4_reviews is true; defaults to ''
'disable_change_emails' => false, // optional; defaults to false
),
honor_p4_reviews
をtrue
に設定する場合は、opt_in_review_path
をディポ内のパスに設定する必要があります。このパスは、存在する実際のファイルを指している必要はありませんが、この機能を使用するすべてのユーザがこのパスにアクセスできるようにする必要があります。以下に例を示します。
'notifications' => array(
'honor_p4_reviews' => true,
'opt_in_review_path' => '//depot/swarmReviews',
),
上記の2つの値が設定されている場合、自分のユーザ仕様内でopt_in_review_path
ファイルをサブスクライブすることにより、Perforceのレビュー機能を使用することができます。このファイルをサブスクライブしているユーザは、自分がサブスクライブしている他のすべてのパスについて、通知を受け取ることになります。
存在しないファイルを指すようにopt_in_review_path
を指定することをお勧めします。例えば、どのユーザも作成しないようなファイルを指すように指定することをお勧めします。ただし、このファイルのディポについては、有効なディポを指定してください。
例えば、ユーザ仕様で以下のようなレビューパスが設定されているとします。
$ p4 user -o asmith
User: asmith
Email: asmith@example.com
FullName: Alice Smith
Reviews:
//depot/swarmReviews
//depot/main/acme/... //depot/main/orion/...
//depot/dev/asmith/... //streams/main
//depot/swarmReviews
は、このユーザがopt_in_review_path
で設定されているパスをサブスクライブしていることを表しています。そのため、このユーザに通知が送信されます。
末尾が「/...」になっているサブスクリプション行により、このユーザが興味を持っているディポ内のパスが定義されます。例えば、このユーザには、//depot/main/acme/foo.txt
に対する変更が通知されますが、//depot/dev/acme/foo.txt
に対する変更については通知されません。
パス内のストリーム仕様の変更に関する通知を受け取るには、サブスクリプション行の末尾にある「/...」を削除します。例えば「//streams/main」というサブスクリプション行の場合、//streams/mainパス内のストリーム仕様に対する変更の通知がユーザに送信されます。
通知を受信するサブスクリプションユーザを確認するには、以下のように、opt_in_review_path
の値に対してp4 reviews <path>
コマンドを実行します。
$ p4 reviews //depot/swarmReviews
asmith <asmith@example.com> (Alice Smith)
bbrown <bbrown@example.com> (Bob Brown)
erogers <erogers@example.com> (Eve Rogers)
特定のチェンジリスト内のファイルをサブスクライブしているユーザを確認するには、p4 reviews -c <changelist>
コマンドを実行します。これにより、そのチェンジリスト内のレビューとレビューパスopt_in_review_path
の両方をサブスクライブしているユーザが表示されます。
- honor_p4_reviews: これを
true
に設定すると、変更をコミットするたびに、Swarmによって電子メール通知がすべてのユーザに送信されます(その変更が、いずれかのReviews:
パスに一致する場合)。 -
opt_in_review_path: これは、任意指定の項目です。
honor_p4_reviews
を設定する場合に限り、必須項目になります。この項目を使用して、通常はHelixサーバマシンには存在しない特殊なディポパスを指定します。この項目を使用してパスを指定した場合、各ユーザはそのパス(または、そのパスが含まれているパス)を自分のユーザ仕様のReviews:
フィールド内で指定する必要があります。これにより、そのユーザのいずれかのReviews:
パスに一致する変更がコミットされるたびに、Swarmによってそのユーザに通知が送信されるようになります。例えば、
opt_in_review_path
をto //depot/swarmReviews
に設定した場合、このパス(または//depot/...
などのパス)を自分のユーザ仕様のReviews:
フィールドに追加することにより、Swarmのレビューに関する通知を受け取ることができます。 - disable_change_emails: これは任意指定の項目です。この項目を
true
に設定すると、Reviews:
フィールドの値と、現在フォローしているユーザとプロジェクトに基づいて、コミットされた変更に関する通知が無効になります。レビューとコメントに関する通知については、引き続き送信されます。
Helixサーバマシンでレビューデーモンがすでに稼働している場合は、Reviews:
パスに対する2つの通知がユーザに送信されます。Swarmの変更通知を使用する場合は、レビューデーモンを無効にすることをお勧めします。
グローバル設定
電子メール通知がユーザやグループに通知される状況としては、さまざまなケースが考えられます。ユーザとグループ所有者は独自の設定を行うことができますが、システム管理者は、config.php
の設定を変更することにより、すべてのユーザとグループのデフォルト値を設定することができます。
- 所有者が指定されていないグループの場合: super 権限を持つユーザのみが、グループの通知設定を構成することができます。
- 1人以上の所有者が指定されているグループの場合: グループの所有者とsuper 権限を持っているユーザのみが、グループの通知設定を構成することができます。
各通知は、Event
とRole
で構成されています。Event
は、発生したイベント(新しいレビューの作成やファイルのサブミットなど)で、Role
は、通知を受け取るユーザまたはグループの役割です。ユーザとグループには、複数の役割を割り当てることができます。その場合、いずれかのユーザまたはグループに通知を送信するように設定すると、そのユーザまたはグループが通知を受け取ることになります。
例えば、レビューに対して投票すると(review_vote
)、以下のように、さまざまな役割のユーザとグループに通知が送信されます。
- ユーザ: レビューに投票したユーザ(
is_self
)、レビューの作成者(is_author
)、レビューが存在するプロジェクトブランチのモデレータとして指名されているユーザ(is_moderator
)、レビュー担当者としてレビューに参加しているユーザ(is_reviewer
)。 - グループ: レビューが存在するプロジェクトブランチのモデレータグループとして指名されているメンバー(
is_moderator
)、レビュー担当者グループとしてレビューに参加しているメンバー(is_reviewer
)。
構成オプション
デフォルトでは、すべての役割に対してすべての通知が有効になっています。システム全体のデフォルト値を変更するには、以下に示すオプションをSWARM_ROOT/data/config.php
のnotificationsブロックに追加します。これらのオプションは、上で説明したオプションとは別に追加する必要があります。
<?php
// this block should be a peer of 'p4'
'notifications' => array(
'review_new' => array(
'is_author' => 'Enabled',
'is_member' => 'Enabled',
),
'review_files' => array(
'is_self' => 'Enabled',
'is_author' => 'Enabled',
'is_reviewer' => 'Enabled',
'is_moderator' => 'Enabled',
),
'review_vote' => array(
'is_self' => 'Enabled',
'is_author' => 'Enabled',
'is_reviewer' => 'Enabled',
'is_moderator' => 'Enabled',
),
'review_required_vote' => array(
'is_self' => 'Enabled',
'is_author' => 'Enabled',
'is_reviewer' => 'Enabled',
'is_moderator' => 'Enabled',
),
'review_optional_vote' => array(
'is_self' => 'Enabled',
'is_author' => 'Enabled',
'is_reviewer' => 'Enabled',
'is_moderator' => 'Enabled',
),
'review_state' => array(
'is_self' => 'Disabled',
'is_author' => 'Enabled',
'is_reviewer' => 'Enabled',
'is_moderator' => 'Enabled',
),
'review_tests' => array(
'is_author' => 'Enabled',
'is_reviewer' => 'Enabled',
'is_moderator' => 'Enabled',
),
'review_changelist_commit' => array(
'is_author' => 'Enabled',
'is_reviewer' => 'Enabled',
'is_member' => 'Enabled',
'is_moderator' => 'Enabled',
),
'review_comment_new' => array(
'is_author' => 'Enabled',
'is_reviewer' => 'Enabled',
),
'review_comment_update' => array(
'is_author' => 'Enabled',
'is_reviewer' => 'Enabled',
),
'review_comment_liked' => array(
'is_commenter' => 'Enabled',
),
'review_opened_issue' => array(
'is_self' => 'Enabled',
'is_author' => 'Enabled',
'is_reviewer' => 'Enabled',
'is_moderator' => 'Enabled',
),
'review_join_leave' => array (
'is_self' => 'Enabled',
'is_author' => 'Enabled',
'is_reviewer' => 'Enabled',
'is_moderator' => 'Enabled',
),
)
4つの有効な値のいずれかを各設定で指定し、該当するタイプの通知の有効と無効を切り替えることができます。特定のイベントに複数の設定が適用されていて、そのうちいずれかの設定が有効になっている場合、ユーザに通知が送信されます。
- Enabled: 対象となるイベントと役割の通知が有効になっている場合、ユーザに対して電子メールがデフォルトで送信されます。
- Disabled: 対象となるイベントと通知の役割が無効になっている場合、ユーザに対して電子メールは送信されません。
- ForcedEnabled: Enabledの場合と同じ動作になりますが、すべてのユーザについて強制的に電子メールが送信される点が異なります。個別のユーザが自分の設定ページでこの通知タイプを無効にすることはできません。
- ForcedDisabled: Disabledの場合と同じ動作になりますが、すべてのユーザについて強制的に通知機能が無効になる点が異なります。個別のユーザが自分の設定ページでこの通知タイプを有効にすることはできません。
どちらの強制オプションも指定されていない場合、個別のユーザとグループ所有者は、システム全体のオプションを上書きし、自分が受け取る通知を設定することができます。
通知の役割
通知の役割を以下に示します。
- is_self: これは、レビューの状態を変更したユーザの役割です。
- is_author: これは、レビューを作成したユーザの役割です。
- is_reviewer: これは、レビューのレビュー担当者として登録されているすべてのユーザとグループの役割です。
- is_member: これは、イベントが発生したプロジェクトのすべてのメンバーの役割です。
- is_moderator: これは、イベントが発生したプロジェクトブランチのモデレータとして登録されているすべてのユーザとグループの役割です。
- is_follower: これは、イベントが発生したプロジェクトのフォロワーになっているすべてのユーザの役割です。
- is_commenter: これは、コメントを作成したユーザの役割です。
通知イベント
通知イベントとは、通知処理を発生させるアクションのことです。以下に通知イベントを示します。
- review_new: 新しいレビューが作成されたときに発生するイベント。
- review_files: レビューにファイルが追加されたときに発生するイベント。
- review_vote: ユーザがレビューに投票したときに発生するイベント。
- review_state: レビューの状態が変更されたときに発生するイベント。
- review_tests: レビューの自動テストにパスしなかったときに発生するイベント。または、レビューがテストにパスしなかった後で、そのレビューが自動テストに初めてパスしたときに発生するイベント。
- review_changelist_commit: レビューのファイルがコミットされたときに発生するイベント。
- review_comment_new: レビューにコメントが追加されたときに発生するイベント。
- review_comment_update: レビューのコメントが更新されたときに発生するイベント。
- review_comment_liked: ユーザがコメントに「いいね」を付けたときに発生するイベント。
- review_join_leave: ユーザまたはグループがレビューに参加したとき(またはレビューから退出したとき)に発生するイベント。