The Hackerlab at regexps.com

リビジョンライブラリの進んだ利用

上: arch Meets hello-world
次: arch のフックによるプロセス自動運転 
前: リビジョンライブラリの基本

デフォルトでは, アーカイブからリビジョンを get したとき, arch は, そのリビジョンの"プリスティンコピー"を {arch} ディレクトリに格納します.

これもまたデフォルトで, リビジョンを get したとき, arch は import の先祖か, 最も近いアーカイブにキャッシュされた先祖を 探して, そして, 欲しいリビジョンを作るためのパッチを適用することで, リビジョンを作成します.

get や同様の操作はリビジョンライブラリを使うことで より速くなり, より空間効率が良くなり得ます. 例えば, もし get がライブラリに依頼されたリビジョンを見つければ, (パッチで作成する代わりに) そこから直接コピーします. そして, {arch} 下でのプリスティンコピーの作成を省きます.

ここまではよしとします. しかし, ライブラリにリビジョンを library-add することを 思い出すのは注意を要することになり得ます. これを自動的にする方法をここで説明します.

欲深な (greedy) リビジョンライブラリ

欲深な (greedy) リビジョンライブラリ の属性は, arch が, ライブラリが特定のリビジョンを持つどうかを常に調べて, 無いときは arch が自動的に追加することです.

特定のリビジョンライブラリのディレクトリを欲深にするのは次のコマンドです:

        % tla library-config --greedy DIR

疎な (sparse) リビジョンライブラリ

arch がリビジョンを欲深なライブラリに自動的に追加するとき, 普通, library-add のデフォルトのやりかたで追加します: 同じバージョンの以前のリビジョンも同様に追加します.

リビジョンを手動で加える場合であれば, library-add--sparse オプションを 付けることで, そのような挙動を避けることができます. 自動的なリビジョン追加で同様にさせるには, 次を使ってください:

        % tla library-config --sparse DIR

これが意味することは, もしリビジョンが自動的に DIR にあるライブラリに 追加されるなら, あたかも library-add--sparse オプション付きで起動されたかのように, 追加されると いうことです.

ハードリンクされたプロジェクトツリー

警告: あなた自身を混乱から守るために, 以下のことを理解しない限りは, この機能は使わないでください: (a) ハードリンクとは何か; (b) エディタが"ファイルを書くときにハードリンクを破壊する"ことの意味. もしこれらを理解していて, あなたが使うエディタが実はハードリンクを壊すことを 知っているなら, この機能を使うかどうかは自由です.

リビジョンライブラリからリビジョンを get するときに, コピーする代わりにハードリンクをすることで, 時間をとても短縮できます:

        % tla get --link REVISION

build-configコマンドは同様のオプションを持ちます:

        % tla build-config --link REVISION

これはディスクをかなり節約して, get 操作の速度をすばらしく 速めます.

(もちろん, ハードリンクしたツリーを使うときに何かまずいことが 起きてリビジョンライブラリのファイルを変更する可能性が少しあります. arch は, そんなことが起これば通知します. そして, ライブラリの問題のある リビジョンを削除して再構築するように助言するエラーメッセージを出します.)

全部まとめる

まとめると, とても簡単で効率の良いはじめかたは以下を伴ないます:

1) 一つもしくはより多くのリビジョンライブラリのディレクトリを作成する.

2) これらのライブラリの幾つかは欲深にし, 可能であれば疎にする.

3) --link オブションを getbuild-config で使う. .

このやりかたで作業して, arch がライブラリにリビジョンを自動的に追加する 必要があるとき, arch は適切なデバイス (ハードリンクを使うため) のライブラリを 検索します. とりわけ, 必要なリビジョンと同じバージョンをすでに含むライブラリを ます検索し, それに失敗すると, 欲深なライブラリを検索します.

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