regexps.com
いろんな目的で、多くのリビジョンのプリスティンツリーを含むライブラリを持つと便利です. 例えば, 特別なバージョンのリビジョン全てについて. しかし、実用のためには, そのようなライブラリを空間的に効率的な方法で体現しなければなりません.
Unix のハードリンクは、そのようなライブラリを格納する自然な方法を提供します。 連続した一連のリビジョンはそれぞれ前のもののコピーですが, 変更のないファイルは ハードリンクで共有します.
arch
には、このようなライブラリを作成, 維持, そして閲覧するのを助けるコマンドがあります.
良い副作用として、操作する必要があるリビジョンがリジジョンライブラリにあると, 多くの arch
コマンドは速くなります.
これについてのより詳しいことは次章にあります.
新しいリビジョンライブラリを始めるには, まず, 新しいディレクトリ (DIR
) を作成し, その位置を登録します:
% tla my-revision-library DIR
次のコマンドで、あなたのライブラリの位置を調べられます:
% tla my-revision-library
または、登録を取消すには:
% tla my-revision-library -d DIR
複数のリビジョンライブラリを持てることに注意してください: 実際には全てのライブラリの位置の"パス"一覧があります.
リビジョンライブラリには、以下の形式のサブディレクトリがあります:
ARCHIVE-NAME/CATEGORY/BRANCH/VERSION/REVISION/
各 REVISION
ディレクトリが含むものは特定のリビジョンの完全なソースです. また, これに加えて補助的なディレクトリとファイルがあります:
REVISION/,,patch-set/ その祖先からこのリビジョンを作るパッチセット (リビジョンが完全なソースのベースリビジョンで無い場合).
リビジョンライブラリのファイルのパーミッションはパッチセットと同様に決まりますが,
リビジョンライブラリのファイルを修正してはなりません.
そうしたばあい、様々な arch
コマンドで、奇妙なエラーおよび失敗を引き起こすでしょう。
リビジョンライブラリへリビジョンを選択して加えることができます:
% tla library-add REVISION
library-add
は通常 REVISION
をライブラリに
加えるだけではなく, REVISION としてのバージョンから, 直前のリビジョン
を(再帰的に)全て加えます.
もしREVISION のみを加えて, 他を加えたくないなら,
--sparse
オプションを使ってください:
% tla library-add --sparse REVISION
ライブラリにある特定のリビジョンを library-find
で見つけることができます:
% tla library-find REVISION PATH-TO-REVSION
その出力はリビジョンを含むライブラリのディレクトリへの絶対パス名です. (重ねて言いますが、そのディレクトリ中のファイルを修正してはなりません)
ライブラリから特定のリビジョンを削除するには、次のものを使用します:
% tla library-remove REVISION
現在のリリースでは次の制限があることを覚えておいてください:
三つの連続するリビジョン、A
、B
および C
を追加するとしましょう。
その後、B
を削除し、さらに再度 B
を加えます。
すると、B
と C
の間のファイル共有が最適なものより
悪くなる可能性があり, ライブラリが必要なものより大きくなります.
(C
を削除し再度加えることにより、これを解決することができます.)
library-archives
コマンドは、
ライブラリに記録された全てのアーカイブを一覧します:
% tla library-archives ARCHIVE-NAME ARCHIVE-NAME ...
同様に、カテゴリー、ブランチ、バージョンあるいはリビジョンを一覧できます:
% tla library-categories [ARCHIVE] % tla library-branches [ARCHIVE/CATEGORY] % tla library-versions [ARCHIVE/BRANCH] % tla library-revisions [ARCHIVE/VERSION]
リビジョンライブラリに個々のファイルを置くことができます:
% tla library-file FILE [REVISION] PATH
または、その内容を得るには:
% tla cat-library-file FILE [REVISION] ...file contents...
両方のコマンドとも --id
および --this
オプションを受けつけます。
--id
を付けることで,
引数 FILE
はインベントリー id として解釈され、
その id を備えたファイルが見つかります。
--this
を付けることで、
FILE
は, プロジェクトツリーの一部であるべき,
カレントディレクトリに相対的なファイルとして解釈されます。
ファイルのインベントリ id が計算され、
対応するファイルは REVISION
で見つかります。
% tla touched-files-prereqs REVISION
そのコマンドは、REVISION
と, それと同じバージョンで先行する
パッチセットを探します (この目的ではリポジトリではなくライブラリを探します).
それは, ファイルとディレクトリの重なりあいのある集合に触れるパッチの一覧を
報告します.
言い換えれば、それは、どのパッチが他のものと無関係に適用できるかを
知らせてくれます.
このコマンドには、あるパターン (例えば,
=README
や
ChangeLog
) と一致するファイル名を無視するオプションがあります.
それは与えられたプロジェクトツリーに既に適用されたパッチを出力リストから除外するオプションを持ちます.
それは、重なりのある特定のファイルを報告するオプションを持っています。
regexps.com