The Hackerlab at regexps.com

アーカイブ内のリビジョンのキャシングによる arch の速度向上

up: arch Meets hello-world
next: arch のチェンジセットのフォーマット
prev: arch のフックによるプロセス自動運転

本章で arch アーカイブへのアクセス速度向上の技法を説明します.

多くのリビジョンを含む arch のバージョンを考えます:


        mainline
        --------
        base-0
        patch-1
        ....
        patch-23
        patch-24
        patch-25
        ...
        patch-42



(プリスティンキャッシュをローカルに持たない) 利用者が patch-42 リビジョンを get したいとします. get は, まず base-0 リビジョンを取得してアンパックし, そして, 順番に, 各 patch-<N> チェンジセットを取得して, ツリーにそれら適用します。

適用する必要のあるチェンジセットのリストが長かったり, それらの合計の大きさがツリー側に較べて大きいなら, この get の実装は不必要に非効率です.

get の速度向上の一つの方法は アーカイブのキャッシュリビジョン (archive caching revisions) です. これはアーカイブでいくつかのリビジョンの "pre-built" コピーを 格納することです.

例えば, 次のコマンドを考えます:


        % tla cacherev -A lord@emf.net--2003-example \
                hello-world--mainline--0.1--patch-40



これは, patch-40 リビジョンを構築し, それを tar にまとめて, それのコピーを, アーカイブの patch-40 デイレクトリに格納します.

続いて, patch-42get すると, まず patch-40 リビジョンのキャッシュコピーを取得し, そして, patch-41patch-42 のチェンジセットを取得して, 適用します: つまり, 40 個のチェンジセットを節約しました.

使用上の注意: この時、 どのリビジョンをキャッシュしどれをキャッシュしないかを決定するのはあなた次第です. 例えば, cron で特定のリビジョンを自動的にキャッシュしたり, もしくは, 単に, get があまりにも遅いと気づいたときに 手動でリビジョンをキャッシュすることにしても良いでしょう. 将来は, 自動的にリビジョンをキャッシュするのためのよりよいサポートを 追加したいと思います.

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