The Hackerlab at regexps.com

リビジョンライブラリの基本

up: arch Meets hello-world
next: リビジョンライブラリの進んだ利用
prev: マルチツリープロジェクトとコンフィギュレーション管理

いろんな目的で、多くのリビジョンのプリスティンツリーを含むライブラリを持つと便利です. 例えば, 特別なバージョンのリビジョン全てについて. しかし、実用のためには, そのようなライブラリを空間的に効率的な方法で体現しなければなりません.

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

現在のリリースでは次の制限があることを覚えておいてください: 三つの連続するリビジョン、AB および C を追加するとしましょう。 その後、Bを削除し、さらに再度 B を加えます。 すると、BC の間のファイル共有が最適なものより 悪くなる可能性があり, ライブラリが必要なものより大きくなります. (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 ) と一致するファイル名を無視するオプションがあります. それは与えられたプロジェクトツリーに既に適用されたパッチを出力リストから除外するオプションを持ちます. それは、重なりのある特定のファイルを報告するオプションを持っています。

arch Meets hello-world: A Tutorial Introduction to The arch Revision Control System
The Hackerlab at regexps.com