Next: , Previous: Assigning revisions, Up: Revisions


4.4 タグ–文字によるリビジョン

リビジョン番号は開発に従って徐々に増えていきますが、 ソフトウェア製品のリリース番号とは全く何の関係もありません。 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 の二つのタグ名は、 cvs が使用するために予約されています。 将来使われる cvs にとって特別な名前は、実際のタグ名との衝突を避け るために BASEHEAD などのような名前ではなく、例えば ‘.’ で始まるような特別な方法で命名されることが望まれています。

タグの命名にプログラムの名前とリリースのバージョン番号のような情報に基 いた何らかの習慣を選びたいでしょう。例えば、CVS 1.9 が cvs1-9 という名前でタグ付けされるように、まずプログラムの名前を使い、その直後 にバージョン番号の ‘.’ を ‘-’ に変更したものを続けるかもしれ ません。同じ習慣を続ければ、常にタグが cvs-1-9cvs1_9 や他のものであったかを推測する必要はなくなります。taginfo ファイルでそ の習慣を強制することさえ考えるかもしれません (see user-defined logging).

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

     $ cvs tag rel-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     /u/cvsroot/yoyodyne/tc/backend.c,v
         Sticky Tag:         (none)
         Sticky Date:        (none)
         Sticky Options:     (none)
     
         Existing Tags:
             rel-0-4                     (revision: 1.4)
     

cvs tag の構文の完全なまとめと、いろいろなオプションの説明は Invoking CVS を参照してください。

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

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

(cvs に対する引数にディレクトリを指定した場合は、 そのディレクトリに含まれる全てのファイルにタグが付けられます。 そのディレクトリ以下の全てのサブディレクトリに対しても (再帰的に) 動作します。See Recursive behavior.)

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

     $ cvs checkout -r rel-1-0 tc

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

任意の時間を指定してモジュールを復元することもできます。 See checkout options. ‘-r’ をこれらのコマンドのどれかに指定す るときは、貼り付きタグに注意する必要があります。Sticky tags 参照。

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

             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     (--- <--- ここを見る
             1.3             1.6     1.3              \_
             1.4                     1.4
                                     1.5