tla inventory — プロジェクトツリーのインベントリ一覧
プロジェクトツリーのインベントリの一覧を表示します。オ プションを指定することでインベントリidで管理されているファイ ル以外のファイルも表示することができます。プロジェクトツリー 中のファイルは、インベントリidの付与規則や、{arch}管理領域に ある=tagging-method ファイル、そのほかの制御ファイルの状態に よっていくつかのグループに分類されます。この規則は歴史的な経 緯もあって非常に複雑ですが、tla inventory コマンドを使えばそ れぞれのファイルがどのグループに分類されているかを確認するこ とができます。
-r または --report を使うと、カテゴリオプション (--sourceなど)はそれらのファイルにたいしてのみ表示するように なります。オプションがなければすべてのセクションとファイルを 含んだ内容が表示されます。-d, -f, -b オプションは相互に排他 的です。ディレクトリが precious, junk, unrecognized である場 合はディレクトリ名称自身のみが表示されます—その内容は 検索されません。
すべてのコマンドオプションは対応するカテゴリオプション を暗黙に含んでいます(たとえば "--source-command" は "--source"を含みます)。コマンドの終了ステータスは無視されま す。
このコマンドは、プロジェクトツリーの初期インポート時に よく利用されます。初期インポート時にはどのファイルがソースファ イル、つまりバージョン管理対象として GNU arch が認識するかが 非常に重要になるからです。またインポート後でもすべてのソース コードに対して一括した処理をしたいような場合にunixのxargsコ マンドとの組み合わせでよく利用されます。また tla tree-lint がエラーになる場合には、このコマンドの表示で詳しい原因がつか めるのが普通です。
このコマンドは非常に豊富なスイッチがあります。
-s, --source ソースファイルの一覧を表示します -p, --precious プレシャスファイルの一覧を表示します -b, --backups バックアップファイルの一覧を表示します -j, --junk ジャンクファイルの一覧を表示します -u, --unrecognized アンレコグナイズファイルの一覧を表示します -t, --trees ネストしたツリーのルートの一覧を表示します -d, --directories ディレクトリのみを表示します -f, --files ディレクトリ以外のファイルのみを表示します -B, --both ディレクトリとファイルの両方を表示します --kind ファイル種別を表示します --all GNU arch 管理領域のファイルも表示します --nested ネストしたツリーも表示します --ids id と共に表示します (ソースファイルのみ) --untagged id のないファイルも表示します --explicit 明示的なidを使います --implicit 暗黙のidを認めます --tagline タグラインidを認めます --names 名前ベースのファイルidを使います
プロジェクトのルートに ,,undo-1 というディレクトリがあ りますが、これがソースファイルとして認識されないことを確認し ています。",," で始まるファイルはすべて無条件にジャンクファ イルとして扱われるという規則があります。ファイルの分類とイン ベントリについては(XXX)を見てください。
$ ls ,,undo-1 hello.c {arch} $ tla inventory S hello.c $
もう一つの例は、プロジェクトツリーのソース全体を一つに まとめて、リリース用 tar ファイルを作るような場合です。説明 のために tools.c というファイルを追加してあります:
$ ls ,,undo-1 hello.c tools.c {arch} $ tla inventory -s | tar -T- -zcvf release.tar.gz hello.c tools.c $ ls ,,undo-1 hello.c release.tar.gz tools.c {arch} $ tar ztvf release.tar.gz -rw-rw-r-- foo/foo 91 2004-04-05 14:23:06 hello.c -rw-rw-r-- foo/foo 54 2004-04-05 14:29:31 tools.c
ソースコード中の文字列を検索します。この場合単純に find プログラムと grep コマンドを組み合わせると {arch}内のファ イルなども検索対象となってしまいます。tla inventory と xargs コマンドを組み合わせて以下のようにするとうまくいきます。たと えばソースコード中の "#ifdef" 行全体を取得したい場合なら:
$ tla inventory -s | xargs -l grep -nH ifdef hello.c:6:#ifdef tools.c:2:#ifdef tools.c:8:#ifdef $