最初, 戻る, 進む, 最後, 目次 に行く。


7.1 タグ--文字によるリビジョン

リビジョン番号は開発に従って徐々に増えていきますが、 ソフトウェア製品のリリース番号とは全く何の関係もありません。 CVS の使い方にもよりますが、 異なる二つのリリースにおけるビジョン番号は異なっているでしょう。 例えば RCS 5.6 を作るソース・ファイルは、 次のようなリビジョン番号を持ちます:

ci.c            5.21
co.c            5.9
ident.c         5.3
rcs.c           5.12
rcsbase.h       5.11
rcsdiff.c       5.10
rcsedit.c       5.11
rcsfcmp.c       5.9
rcsgen.c        5.10
rcslex.c        5.11
rcsmap.c        5.2
rcsutil.c       5.10

tag コマンドを使えば、 特定のリビジョンに名前 (タグ名) を付けることができます。 各ファイルに付けられた全てのタグと 対応するリビジョン番号を調べたい場合は、 status コマンドに `-v' フラグを付けて下さい。 タグには、大文字, 小文字, 数字, `-', `_' が使用可能です。 また BASEHEAD の二つのタグ名が、 特別な目的のために予約されています。 特別な目的のためには、BASEHEAD ではなく、 `%'`=' 等の文字を使うようにして、 普通のタグ名との重複を避けることを将来の CVS に望みます。

次の例は、ファイルにタグを付ける方法を示したものです。 コマンドはあなたの作業ディレクトリで実行して下さい。 このディレクトリ中に `backend.c' というファイルがあるとします。

$ cvs tag release-0-4 backend.c
T backend.c
$ cvs status -v backend.c
===================================================================
File: backend.c         Status: Up-to-date

    Version:            1.4     Tue Dec  1 14:39:01 1992
    RCS Version:        1.4     /usr/local/cvsroot/yoyodyne/tc/backend.c,v
    Sticky Tag:         (none)
    Sticky Date:        (none)
    Sticky Options:     (none)

    Existing Tags:
        release-0-4                     (revision: 1.4)

単独のファイルにタグを付けるべき理由はほとんどありません。 タグの主な使い途は、 モジュールを構成する全てのファイルに同じタグを付け、 開発の流れの重要点 (リリース時など) を示すことです。

$ cvs tag release-1-0 .
cvs tag: Tagging .
T Makefile
T backend.c
T driver.c
T frontend.c
T parser.c

(コマンドの引数にディレクトリを指定した場合は、 そのディレクトリに含まれる全てのファイルにタグが付けられます。 そのディレクトリ以下の全てのサブディレクトリに対しても、 再帰的に動作します。「9 再帰的動作」参照。)

checkout コマンドの `-r' フラグに、 モジュールから取り出すリビジョンを指定します。 このフラグを用いて、 モジュール ` tc' のリリース 1.0 を作るソースを、 将来のいつでも簡単に復元することができます:

$ cvs checkout -r release-1-0 tc

リリース時にタグを付けるようにしておけば、 過去のリリースにバグが発見されたが最新版には無い、 という場合などに非常に便利です。

蛇足ですが、任意の時間を指定してモジュールを復元することもできます (「A.6.1 checkout のオプション」参照)。

複数のファイルに同じタグを付けるという事を、 「ファイル名とリビジョン番号の行列の中に線を引く」 と考えると良いでしょう。 五つのファイルについてのイメージを次に示します:

        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

上図では `*' の付いたリビジョンにタグが付けられています。 仮にタグ名を「タグ付きリビジョンを結んだ紐」と考えると、 checkout`-r' は 「紐を引くとタグ付きリビジョン全てが釣れる」などと解釈できるでしょう。 あるいはタグ付きリビジョンを水平に並べた方が、分り易いかも知れません:

        file1   file2   file3   file4   file5

                        1.1
                        1.2
                1.1     1.3                       _
        1.1     1.2     1.4     1.1              /
        1.2*----1.3*----1.5*----1.2*----1.1     (--- <--- Look here
        1.3             1.6     1.3              \_
        1.4                     1.4
                                1.5


最初, 戻る, 進む, 最後, 目次 に行く。