先程の例で 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' を update
や checkout
に使うと、
貼り付いた日付 (sticky date) が設定され、
これ以降のコマンドにその日付が与えられます。
古いバージョンのファイルを取り出す際に、
タグを貼り付けたくない場合も多いと思います。
checkout
や update
にオプション `-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 $