"Stephen J. Turnbull" <turnbull(a)sk.tsukuba.ac.jp> writes:
I would appreciate comments from anybody who's done this kind of
thing before.
I don't consider myself a CVS guru, but I have learned some of it
after the company forced it down my indignant, bleating throat.
1. Vin can safely make the move of stable/21.1 OFF the trunk at any
time. This is very important. The method is something like
(1) doing a release. This involves making a release tag, say r21-1-16.
(2) make a branch point tag (purely for documentation)
This is also important if you ever want to move back to the stage
before the branching, or if you want to explicitly name the branch
root. As my book says, "Branching Principle Number 4: Always create a
non-branch tag along with the branch." Need I say that I learned this
the hard way?
(3) moving his workspace on to the branch with
cvs update -r release-21-1
(4) announcing that the stable trunk is dead, and all people using
the stable code base must move to the branch
OK.
4. After a decent interval, delete all the files from a working
directory containing the trunk tree, cvs remove them all, then
copy all the files from a temporary-21-5 tree. Then cvs add in
each directory by hand (or script). There doesn't seem to be an
easy way to do this, or to arrange that CVS directly commit a
temporary-21-5 tree to the trunk, but I'll keep looking and
experimenting.
Basically, what you want is to type `cvs update -A', but then to
prevent CVS from making any changes to the actual files.
I guess you could copy each file to file.orig, and then copy it back
after the sticky tag has been cleared, but it won't work for files
that have been deleted or newly added. :-(