Appendix DG1. The CVS リポジトリ(置き場所)

Table of Contents
CVS のツリー構造
匿名(anonymous) CVS を通してソ ースを取得する
CVSup 経由でソースを取ってくる

Postgres のソースコードは、 CVS コード管理システムを使って格納・ 管理されています。

Postgres のサーバからあなた自身のマシ ンに CVS コードツリーを引っ張ってくる には、少なくとも anonymous CVS と CVSup という2つの方法があります。

CVS のツリー構造

Author: Written by Marc G. Fournier on 1998-11-05.

cvs checkout には、あるモジュールの特定のリビ ジョン(版)からチェックアウトするための -r と いうフラグがあります。これにより、将来にわたっていつの時点におい ても、たとえば以下のようにモジュール 'tc' のリリース 1.0 となる ソースを取り出す、といったことができます。

$ 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 オプションを追加して やります。

つまり、v6.4 版を作成するために、私は以下のようにしました:

$ cd pgsql
$ cvs tag -b REL6_4
   
これはそのタグと、リリース用のツリーのための枝を作ります。

ここまでくれば、実際に CVS でアクセス するのは非常に簡単です。まず RELEASE とCURRENT という2つのサブ ディレクトリを作って、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
   
すれば、その枝 だけ にパッチが適用されます。