regexps.com
プロジェクトツリーのインベントリ (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
と同じように正規表現の宣言を含むことができます
(例えば, excludes
や junk
等の正規表現.)
これらを
ディレクトリに局所的な正規表現
と呼びましょう.
=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