どのように動作するのか — get を使ったリビジョンの抽出

base-0 リビジョンを抽出するのは簡単です。思い出すことができるように、 base-0 リビジョンは、完全なソースツリーの圧縮された tar ファイルとして 保存されています( どのように働くか — インポートの効果項参照)。 base-0の抽出を指示すると、getコマンドは本質的には 単にその tar ファイルを展開するだけです。

patch-1 リビジョンの抽出は、二つのステップで実行されます。 patch-1base-0patch-1 の間の差分を記述したchangeset として保存されていることを思い出して ください。(どのように動作するか — 新しいリビジョンのコミット項参照)。 それで get は、最初にbase-0リビジョンを抽出し、 次にpatch-1を抽出し、そのチェンジセットをbase-0を 変形するのに利用することで、patch-1のツリーに変化します。 内部的には、get は、larchのコマンド、dopatch を チェンジセットを適用するのに使います。もし、diff/patchパッチセットに なじみがあるのなら、dopatch を、「ステロイドの上へのパッチ」 と考えることもできます。

ひとつの変更をコミットするかわりに、たくさんの変更をコミットしたとしましょう: patch-1 のリビジョンだけではなく、 patch-2, patch-3 などなど。本質的には getは、要求したリビジョンを 作るために、それぞれのチェンジセットを適用します。

注意: 実際には get は、上に説明したよりも、もう少し複雑なことをします。 たくさんのチェンジセットを適用しなくてはならないことを考慮して、get は最適化されています。一方、commitではなく、tagによって 作られたリビジョンもあるかも知れません。その場合は別の規則が適用されます。後の章でこの例外 について学ぶでしょう。