第29章 arch の通知機能を使った処理の自動化

目次

四つの通知設定ファイル
リポジトリ中のすべてに対する通知
通知メール
通知に関する堅牢さの問題
cron によるスケジュール通知
archコマンドからの通知のスケジュール

進行中の開発機能に関する注意: この章で記述されている機能はおそらくarchの1.0のリリース 以前とは互換性のない変更を含んでいます。

ある場面で、アーカイブに対する変更の検出によってある動作がトリガーされる と便利です。たとえば、新しいリビジョンがチェックインされる時は常に emailを送信したいと思うかも知れません。

コマンドnotify はこの機能を提供します:

        % larch notify NOTIFICATION-DIR

このコマンドは NOTIFICATION-DIRにある設定ファイルを読み込みます。 この設定ファイルはどのリポジトリのどの部分を監視するか、また変更によってどのような 動作をするか、についての記述があります。変更が検出されると、notify はその動作を実行します。

この章では notify を一般的に説明します。 NOTIFICATION-DIR の形式と設定ファイルの形式についての説明を します。そしてnotify が何をするかについて説明します。

四つの通知設定ファイル

notify は四つの設定ファイルによって制御されます。 設定ファイルはNOTIFICATION-DIRにあります。それは以下の ものです:

        =rules.archives
                Specifies actions to take whenever new categories
                are added to specific archives.

        =rules.categories
                Specifies actions to take whenever new branches
                are added to specific categories.

        =rules.branches
                Specifies actions to take whenever new versions
                are added to specific branches.

        =rules.versions
                Specifies actions to take whenever new revisions
                are added to specific versions.

これらのファイルの中では空白行があってもよく、コメントは '#'で始まり、行末まで 続きます。

ファイル =rules.versions は、以下のような形式の行を含んでいます:

VERSION ACTION

ここで VERSION は完全に修飾されたバージョン名で、動作は以下の形式 の文字列です(空白があってはなりません):

COMMAND:THUNK

新たらしいリビジョンが VERSION中に検出された場合は常に notify が実行されます:

larch COMMAND THUNK RVN ...

ここで COMMANDTHUNK は設定ファイルからのもので、 最後の RVN 引数は新しく検出されたリビジョンの完全に修飾された リビジョン名のリストです。

ファイル =rules.branches も同様です。それは以下の形式の行を含んでいます:

BRANCH COMMAND:THUNK VERSION-ACTION

新しいバージョンが BRANCHに作られると常に notify は 二つの動作をとります。まず以下を起動します:

larch COMMAND THUNK VSN ...

次に、以下のような形式の新しいルール =rules.versions を追加します:

VSN VERSION-ACTION

=rules.categories=rules.archives はよく似ています。 前者は以下の形式の行を含んでいます:

CATEGORY COMMAND:THUNK BRANCH-ACTION VERSION-ACTION

後者は以下のような形式の行を含みます:

ARCHIVE COMMAND:THUNK CATEGORY-ACT BRANCH-ACT VERSION-ACT

設定ファイルに加えて、notify はプライペートな状態を NOTIFY-DIRに管理します。解くに、それはどのような通知が既に 送信されたかを記録し、同じ通知を何度も送信するのを防ぎます。