F.2. CVSツリー構造

著者: 1998年11月5日、Marc G. Fournier()により 書かれました。

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

$ cvs checkout -r REL6_4 tc

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

ティップ: また、-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などを参照します。

注意: リリースブランチを作成する際も、コマンドに-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

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