A.2. CVS ツリー構造

著者: 1998-11-05 Marc G. Fournier () により書かれました。

cvs checkout コマンドには -r というフラグがあり、特定の改訂版モジュールのチェックアウトを可能にします。例えば将来いかなる場合において、モジュール「tc」のリリース 6_4 を構成しているソースを抽出する時にこのフラグは作業を簡単にします。

$ cvs checkout -r REL6_4 tc
   

例えば、誰かがそのリリースにあるバグを報告してきたけれど、現在作業しているファイルにそのバグがみつからない時に有効です。

Tip: また、-D オプションを使用して特定の日にちのモジュールをチェックアウトすることができます。

1 つ以上のファイルに対して同じタグを使用する場合、そのタグは "ファイル名対改訂版番号のマトリックスに引かれた曲線" と考えることができます。例えば、5 つのファイルがあり、それぞれに下記の改訂版があるとします。

             file1   file2   file3   file4   file5

             1.1     1.1     1.1     1.1  /--1.1*      <-*-  TAG
             1.2*-   1.2     1.2    -1.2*-
             1.3  \- 1.3*-   1.3   / 1.3
             1.4          \  1.4  /  1.4
                           \-1.5*-   1.5
                             1.6
   

この例で、タグ TAG は file1-1.2、file2-1.3 などを参照します。

Note: リリースブランチを作成する際も、コマンドに -b オプションを追加する以外は同じ方法で作成できます。

と言うことで、6.4 リリースはこのようにして作成されました。

$ cd pgsql
$ cvs tag -b REL6_4
   

このようにすればタグと RELEASE ツリーのためのブランチが作成されます。

CVS によるアクセスによって、異なったバージョンごとのディレクトリを作成することは簡単です。まず新しいものと古いものが混ざらないように、RELEASE と CURRENT という 2 つのサブディレクトリを作成します。 作成したら、次のコマンドを実行します。

cd RELEASE
cvs checkout -P -r REL6_4 pgsql
cd ../CURRENT
cvs checkout -P pgsql
   

上記のコマンドを実行すると RELEASE/pgsqlCURRENT/pgsql の 2 つのディレクトリツリーが作成されます。これ以降、CVS がどのリポジトリブランチがどこのディレクトリツリーにあるかを管理し、それぞれのツリーに対し独自の更新が可能となります。

もし CURRENT ソースツリーだけで作業を行っているのであれば、作業はリリースブランチにタグを付ける前と同じです。

次のようにして最初のチェックアウトを行います。

$ cvs checkout -r REL6_4
   

このディレクトリ構造内で何を行うとも、更新はそのブランチ内のみに制限されます。もしそのディレクトリー構造にパッチをあて、そして次のようにしたとします。

cvs commit
   

すると内部ではパッチがそのブランそのブランチに適用され、またそのブランチのみの適用となります。