次: , 前: commitinfo, 上: Administrative files


C.5 ログメッセージの検証

一旦ログメッセージを入力すると、bug ID などの特定の内容を調べるために そのメッセージを評価することができます。ログメッセージを検証するための プログラムを指定するために verifymsg ファイルを使用することがで きます。このプログラムは入力されたメッセージに必要なフィールドがあるか どうかを調べる簡単なスプリプトでも良いでしょう。

verifymsg ファイルは、ログメッセージの雛型を指定するために使う ことのできる rcsinfo ファイルと一緒に使用されたときにとても役に 立つことが多いです。

verifymsg ファイルは正規表現とコマンド行の雛型から成ります。雛 型はプログラム名を含んでいなければならず、任意の数の引数を取ることがで きます。現在のログメッセージ雛型ファイルへのフルパスが雛型の最後に追加 されます。

一つ注意しなければならないのは、`ALL' キーワードは使えないという ことです。一行以上合致した場合、最初のものが使われます。これはディレク トリで既定の検証スクリプトを指定して、サブディレクトリで上書きするとき に役に立ちます。

リポジトリ名がこのファイルのどの正規表現にも合致しなければ、 `DEFAULT' が指定されていると、それが使用されます。

検証スクリプトが非零の値で終了すれば、格納は中止されます。

検証スクリプトはログメセージを変更できないことに注意してください。単に 受け入れるか拒否するかのどちらかです。

以下は、verifymsg ファイルのちょっとしたばかげた例と、それに対 応する rcsinfo ファイル、ログメッセージの雛型と検証スクリプトで す。まず、ログメッセージの雛型です。常に bug-id 番号をログメッセージの 最初の行に記録します。ログメッセージの残りのテキストは自由に書いたもの です。以下の雛型ファイルは /usr/cvssupport/tc.template にありま す。

     BugId:

スクリプト /usr/cvssupoort/bugid.verify はログメッセージの評価 に使われます。

     #!/bin/sh
     #
     #       bugid.verify filename
     #
     #  Verify that the log message contains a valid bugid
     #  on the first line.
     #
     if head -1 < $1 | grep '^BugId:[ ]*[0-9][0-9]*$' > /dev/null; then
         exit 0
     else
         echo "No BugId found."
         exit 1
     fi

verifymsg ファイルには以下の行があります:

     ^tc     /usr/cvssupport/bugid.verify

rcsinfo ファイルには以下の行があります:

     ^tc     /usr/cvssupport/tc.template