ノード:What Happens When You Remove A File, 次:The CVSROOT/ Administrative Directory, 前:RCS Format, 上:Repository Administration
あるプロジェクトからファイルを削除する場合、そのファイルは単になくなる
だけではありません。 プロジェクトの古いスナップショットを要求されても、
CVS はそのようなファイルにもちゃんとアクセスできなければならないのです。
なくなるかわりに、そのファイルは文字通り Attic
(訳注: Attic=屋根
裏)に移されます:
floss$ pwd /home/jrandom/src/myproj floss$ ls /usr/local/newrepos/myproj/ README.txt,v a-subdir/ b-subdir/ foo.jpg,v hello.c,v floss$ rm foo.jpg floss$ cvs rm foo.jpg cvs remove: scheduling 'foo.jpg' for removal cvs remove: use 'cvs commit' to remove this file permanently floss$ cvs ci -m "Removed foo.jpg" foo.jpg Removing foo.jpg; /usr/local/newrepos/myproj/foo.jpg,v <-- foo.jpg new revision: delete; previous revision: 1.1 done floss$ cd /usr/local/newrepos/myproj/ floss$ ls Attic/ README.txt,v a-subdir/ b-subdir/ hello.c,v floss$ cd Attic floss$ ls foo.jpg,v floss$
プロジェクトのリポジトリ内ディレクトリに Attic/
というサブディレ
クトリがある場合、それは、少なくとも1ファイルはそのディレクトリから削除
された、ということを意味します(つまりプロジェクトで Attic という名前の
ディレクトリは使ってはいけないということです)。CVS は RCS ファイルを
Attic/ に移すだけではなく、そのファイルの新しいリビジョンを、
dead
という特別なリビジョン状態でコミットします。Attic/foo.jpg,v
から関係個所を示します:
1.2 date 99.06.21.03.38.07; author jrandom; state dead; branches; next 1.1;
あとでファイルを生き返らせた場合CVS は、過去のある時点でこのファイルが 死に、今は再び生きている、ということを記録します。
これはつまり、削除したファイルを元に戻したい場合に Attic/ ディレクトリ
から出してプロジェクトに戻しただけではダメだということを意味します。そ
うではなくて、作業コピー内で次のようにしてください:
floss$ pwd /home/jrandom/src/myproj floss$ cvs -Q update -p -r 1.1 foo.jpg > foo.jpg floss$ ls CVS/ README.txt a-subdir/ b-subdir/ foo.jpg hello.c floss$ cvs add -kb foo.jpg cvs add: re-adding file foo.jpg (in place of dead revision 1.2) cvs add: use 'cvs commit' to add this file permanently floss$ cvs ci -m "revived jpg image" foo.jpg Checking in foo.jpg; /usr/local/newrepos/myproj/foo.jpg,v <-- foo.jpg new revision: 1.3; previous revision: 1.2 done floss$ cd /usr/local/newrepos/myproj/ floss$ ls Attic/ a-subdir/ foo.jpg,v README.txt,v b-subdir/ hello.c,v floss$ ls Attic/ floss$
RCS 形式について知るべきことはもっとたくさんありますが、CVS のリポジト リの管理者としてはこれで十分だと思います。RCS ファイルを直接いじること は滅多にないことです。普通はせいぜいリポジトリ内のファイルのパーミッショ ンをいじったりする程度です、少なくともわたしが経験してきたところでは。 そうは言っても、CVS の動作が変になりはじめたら(稀ではありますが可能な範 疇を越えているわけではありませんから)、実際に RCS の中身を見てみて、何 が起こっているのか調べたくなるだろうと思います。