リビジョンライブラリ

最後の方法がリビジョンライブラリだ。まず最初に断っておくが、 リビジョンライブラリは、通常のコンピュータ言語での開発で利用するラ イブラリとは何の関係もないので注意してほしい。リビジョンライブラリ は大雑把にいって、アーカイブバージョン中のすべてのリビジョンを完全 な形ですべて保持してしまおうという考え方だ。ある意味非常に露骨でもっ とも単純で、それゆえ強力な方法だとも言える。すべてのリビジョンを展 開した形で持つわけだから、莫大なディスク容量が必要に思えるが、リビ ジョン間で変更のないファイルについては unix のハードリンクの考え方 を使い、一つの実体としてのファイルを複数の場所から指し示すことによっ て空間を節約する仕組みを持っている。もちろんこれは内部的な実装の話 なので利用者から見ると、巨大なリビジョン群がそのままそこに存在し、 その割にはディスクが消費していないような状況になる。あるリビジョン から次のリビジョンへの修正は通常それほど多くのファイルで起こるわけ ではないので、空間の最適化はかなり良い結果をもたらすことが多い。

リビジョンライブラリは、自分が必要だと思うリビジョンを明示的 に指定して生成することもできるし、ある処理において副次的にリビジョ ンを計算しなくてはならない時に、暗黙にそのリビジョンをライブラリに 常に追加するように設定することもできる。後者に設定しておけばいちい ち tla library-add コマンドを発行しなくても、いろいろなアーカイブ バージョンをいじっているうちに自然とパフォーマンスが向上していくよ うな結果をもたらすはずだ。欠点としては自分があまり意識しないうちに ディスク容量が消費されていくことだろう。

暗黙にリビジョンライブラリの内容を豊富にしていくのと同時にディ スク容量もそれほど消費させたくない場合、折衷案をとることもできる。 このためにもう一つ設定することのできるパラメータがある。この sparseを設定すると、あるリビジョンをライブラリに追加する際、そのリ ビジョンを作成するに当たってできた中間のリビジョンについてはライブ ラリに登録しない。

ライブラリを扱うコマンドはいろいろと存在するが、例によってカテゴリ・ブ ランチ・バージョンの 3 階層システムからくる複雑さであり、基本的に は設定、追加、内容表示、の 3 っつの種類しかない。