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


7.4 貼り付いたタグ

先程の例で checkout 時に付けた フラグ `-r release-1-0-patches' は、 各ファイルに貼り付けられ (sticky)、 今後このディレクトリで実行されるコマンドに与えられます。 つまりこの作業ディレクトリに対する修正は、全て枝に格納されます。 後でこれらの修正を幹に戻すことも可能です。「8 マージ」参照。

貼り付いたタグ (sticky tag) や日付を調べるには、 status コマンドを使用します:

$ vi driver.c   # Fix the bugs
$ cvs commit -m "Fixed initialization bug" driver.c
Checking in driver.c;
/usr/local/cvsroot/yoyodyne/tc/driver.c,v  <--  driver.c
new revision: 1.7.2.1; previous revision: 1.7
done
$ cvs status -v driver.c
===================================================================
File: driver.c          Status: Up-to-date

    Version:            1.7.2.1 Sat Dec  5 19:35:03 1992
    RCS Version:        1.7.2.1 /usr/local/cvsroot/yoyodyne/tc/driver.c,v
    Sticky Tag:         release-1-0-patches (branch: 1.7.2)
    Sticky Date:        (none)
    Sticky Options:     (none)

    Existing Tags:
        release-1-0-patches             (branch: 1.7.2)
        release-1-0                     (revision: 1.7)

作業ファイルに貼り付いたタグは、 `cvs update -A' を使って削除するまで残ります。 オプション `-A' は、ファイルを幹の先頭のバージョンに戻し、 貼り付いたタグ, 日付, オプションを全て剥します。

貼り付いたタグとなるのは枝だけではありません。 ここでは、他人の変更が安定しているかどうか分らないので、 作業ディレクトリを更新したくない場合を例に挙げて考えます。 もちろんこの場合、cvs update の実行を控えれば済みます。 しかし、更新したくないのが大きなツリー構造の一部分だけならば、 そこにリビジョンを貼り付ければ良いのです。 ソースを取り出す際に (1.4 などと) リビジョンを指定すれば、 そのリビジョンを貼り付けることができます。 以後、`cvs update -A' によってタグを剥がすまで、 cvs update を実行しても 最新リビジョンに更新されることはありません。 同様にオプション `-D'updatecheckout に使うと、 貼り付いた日付 (sticky date) が設定され、 これ以降のコマンドにその日付が与えられます。

古いバージョンのファイルを取り出す際に、 タグを貼り付けたくない場合も多いと思います。 checkoutupdate にオプション `-p' を付けると、 ファイルの内容が標準出力に送られるので、これを利用します。 例えば、リビジョン 1.1 のファイル `file1' を削除したとします (削除後のリビジョンは 1.2 になります)。 その後、以前と同じ内容で、再度このファイルを加えることになりました。 この場合の手順を以下に示します:

$ cvs update -p -r 1.1 file1 >file1
===================================================================
Checking out file1
RCS:  /tmp/cvs-sanity/cvsroot/first-dir/Attic/file1,v
VERS: 1.1
***************
$ cvs add file1
cvs add: re-adding file file1 (in place of dead revision 1.2)
cvs add: use 'cvs commit' to add this file permanently
$ cvs commit -m test
Checking in file1;
/tmp/cvs-sanity/cvsroot/first-dir/file1,v  <--  file1
new revision: 1.3; previous revision: 1.2
done
$ 


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