[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: cvs disaster recovery



On Sat, Oct 26, 2002 at 06:53:06PM -0400, Gregory Seidman wrote:
> Before anyone brings it up, I know there should have been backups of the
> CVS repository. That said, I am in the following situation:
> 
> 1) Machine alpha, which had the CVS repository, is temporarily
>    unavailable (in a policy, rather than technical, sense).

You have my sympathy.  In a previous life, I got to deal with a CVS
server that died with no good backups.  Fortunately, I wasn't
responsible for admin there, so neither the hardware failure nor the
bad backups were attributed to me.  Unfortunately, I was the one who
pushed CVS and used it most heavily, so I got blamed for schedule
slippage when I had to spend time rebuilding the CVS repository
instead of writing code.

> Is there any way to accomplish this? Do I have to give up and simply
> import the entire codebase as if it were a new project?

You're going to have to set up a (hopefully) temporary repository to
use until alpha becomes available.  If alpha is completely
unavailable (as opposed to simply not being able to use its CVS
repository), it'll make your life a lot easier if you tweak either
DNS or /etc/hosts to associate alpha's name with the temporary CVS
server's IP address; if you can't do this, you'll need to update
CVS/Root in every CVS-managed directory *of the new master copy*.
("New master copy" being the copy you initially import to the new
repository.)

Then you'll need to import the master copy, check it out on each
development station, and copy all the modified files from the exiting
CVS client trees into the new ones and check them in, which will
start the new version trail.  Just be sure not to copy the CVS
subdirectories over to the new tree, since they'll still have version
info from the old tree.

If alpha should become available again and you still want to switch
back to it, you'll need to commit everything to the new repository,
check out a fresh copy from alpha, use `cvs export` to get a current
copy from the new repository without CVS subdirectories, `cp -r` the
exported tree onto the fresh tree from alpha, and commit it.

Now, if you'll excuse me, I have some memories to re-repress...

-- 
When we reduce our own liberties to stop terrorism, the terrorists
have already won. - reverius

Innocence is no protection when governments go bad. - Tom Swiss



Reply to: