[1334] in Kerberos_V5_Development
Re: merging the new admin stuff into the repository]
daemon@ATHENA.MIT.EDU (Greg Hudson)
Tue Jun 18 21:11:26 1996
To: Marc Horowitz <marc@cygnus.com>
Cc: krbdev@MIT.EDU, ghudson@MIT.EDU
Date: Tue, 18 Jun 1996 21:11:13 EDT
From: Greg Hudson <ghudson@MIT.EDU>
Marc is proposing ways of doing two things, expressed as general
operations:
* Inserting files into the repository with revision history
from another location.
* Renaming a directory tree (or, at any rate, the part of that
directory which existed before the previous operation).
The introduction of dead states allows you to do both of these fairly
cleanly within the CVS and RCS abstractions, although CVS doesn't
provide a way to do it right now.
To insert files with previosu revision history, you want to insert the
RCS file into the repository, change all of the revisions' states to
dead, and then make a new revision (in this case, on a branch named
OV_9510_INTEGRATION branching off the last revision on the mainline)
with state Exp, no change, and a log message indicating that this is
when the file was added to the repository on such-and-such a branch.
To rename files, you have a couple of options. The "currently
supported" way of doing this is to:
* Check in the files in the new location, with a log message
referring to the old location.
* Delete the files in the old location.
This means you may have to search through several files to find the
revision information for a given file if it moved several times. If
you want to preserve revision information, you want to:
* Copy the RCS files into the new location.
* Change all the states to dead in the new RCS files.
* For each file, make a new revision with state Exp with a log
message indicating that this is when the file was renamed.
* Delete the files in the old location.
The idea is that some revisions are "fictitious" in that they never
existed in the repository on the indicated date or with the specified
tags. All such revisions should be marked dead, so they won't be
checked out by CVS.
The only particularly tricky part of doing this by hand is "making a
new revision," possibly on a branch. Probably the easiest way of
doing this is to check out the latest revision of the files in
question, create the branch tag with "cvs tag -b", make the new
revision using "cvs ci -f" (note that -f disables recursion, for
reasons I'm not sure of; I don't know if "cvs ci -f -R" does recursion
or not), and THEN change the states of all the fictitious revisions to
dead.
Sound good? Enjoy.