The Hackerlab at regexps.com

インベントリ命名規約のカスタマイズ

up: arch Meets hello-world
next: The GNU General Public License
prev: arch チェンジセットフォーマット

プロジェクトツリーのインベントリ (inventory)では、 どのようにして tla inventoryコマンドが命名規約の一組を使って プロジェクトツリーの内のファイルを分類するかを習いました. この付録は、どのようにして命名規約をカスタマイズすることができるか説明します。

命名規約をカスタマイズする時

最初にプロジェクトの命名規約をカスタマイズするのが最適です: 最初のリビジョンを import する前です.

もし後で変更する必要があれば、 絶対必要なことは次のことです: 変更が, それをした時点でプロジェクトの最新のリビジョンにすでにあるファイルの分類を変更しないことです (さもなくば, 混乱させる望ましくない振舞いに出会うでしょう).

命名規約のカスタマイズの方法

まずは命名規約のアルゴリズムのおさらいを arch 命名規約でしてください. そのアルゴリズムを変更するには, 各カテゴリテストに使われる正規表現を変更します.

プロジェクトツリーのファイル ./{arch}/=tagging-method を修正することで, 命名規約をカスタマイズすることができます. そのファイルは tagging-method コマンドによって作成されて、 最初に id をタグ付けする方法 (names, explicit, tagline (または、いまは非推奨ですが、arch自身を含む, いくつかの旧プロジェクトにおいて好かれている implicit)) を指定する一行を含みます

特に, =tagging-method が含むことのできるものは, 空行, コメント (行頭が # で始まるもの)と, 一行に一つの命令 (directives). 書くことのできる命令は:

        tagline
        implicit
        explicit
        names
                このツリーの id タグ付けの方法を指定します

        exclude RE
        junk RE
        backup RE
        precious RE
        unrecognized RE
        source RE
                示されてるファイルのカテゴリに使う正規表現を指定します

正規表現を指定するのは Posix ERE 文法です ( egrep , grep -E , と awk で使われてるのと同じ文法です) そして, arch 命名規約に記述されている命名規約を実装したデフォルト値を持ちます.

正規表現の命令は複数回置けます. その場合, 正規表現は選択肢として 連結されます. よって, 例えば:

        source  .*\.c$
        source  .*\.h$

は次と等価です:

        source (.*\.c$)|(.*\.h$)

ディレクトリ毎の正規表現

ソースディレクトリは .arch-inventory ファイルを 含むことができます.

.arch-inventory ファイルは =tagging-method と同じように正規表現の宣言を含むことができます (例えば, excludesjunk 等の正規表現.) これらを ディレクトリに局所的な正規表現 と呼びましょう. =tagging-methodの正規表現は 大域的な正規表現 です.

ツリーを横切る間に, それぞれのファイルは, 以下のように, 名前で 分類されます. .arch-inventoryによって変更される段階を [*]で印が付いてます:

        0) "." と ".." は excluded のままです. 例外はありません.

   [*]  1) もし excluded なファイルがインベントリから省かれていて,
           ディレクトリに局所的か大域的な正規表現のいずれかなら, 
           ファイルは excluded です.

        2) ファイルがコンロトールファイルなら, source です

        3) ファイルが "必須カテゴリ" (",," と "++" ファイル)の
           一つに属するなら, それぞれ, junk か precious のカテゴリに
           分類されます.

   [*]  4) ディレクトリに局所的な正規表現(のみ)が普通の順番で
           試みられます: junk, backup, precious, unrecognized, source.  
           もし, ファイルが一致すれば, 適当にカテゴリが分類されます.

        5) 大域的な正規表現が同様の順番で試みられます.

        6) さもなくば, ファイルは unrecognized です.

arch Meets hello-world: A Tutorial Introduction to The arch Revision Control System