info-cvs
[Top][All Lists]
Advanced

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

Is there a safe way to do this kind of offline CVS management?


From: Doug Lee
Subject: Is there a safe way to do this kind of offline CVS management?
Date: Sat, 2 Apr 2005 16:57:07 -0500
User-agent: Mutt/1.5.6i

I use CVS to manage a number of projects.  When possible, I use a
central repository and link to it either locally or through a tunnel.
But sometimes I have to work on a CVS project at a location that has
no Internet connectivity.  For that, I've routinely carried repository
trees around as follows:

1.  Tell everyone that they should not modify the central tree, then
check out the current HEAD from the tree of interest somewhere at the
office so I can use it as a sanity check when I get back.

2.  Zip up the tree, take the zip to the work site, and unpack it
there into a freshly initialized CVS tree.

3.  Work as usual, checking out, modifying files, and committing as
needed.

4.  Zip up the on-site tree, bring it back to the central server, and
use the zip to replace the original tree.

5.  Do a cvs update in the sandbox I created in step 1 as a sanity
check.

This process has worked fine except for the occasional issue with
a file being renamed in the repo by something to the same name with
different letter casing, my best solution to which has been a little
hand-editing of CVS/Entries files in sandboxes (despite many
remonstrances against this in a recent thread on this list).

This week though, I decided to extend the concept a bit, and I ported
a whole raft of things from the central repository over to a thumb
drive, then worked on things while on the road.  I planned to use
`diff' on returning home to detect changed repo files, then drop in
the on-the-road versions as needed.  I was thwarted, though, by a
whole mess of directories whose names had magically become upper-cased
on the thumb drive.  As a result, what should have taken me some 20
minutes max took hours to straighten out.

I know straight CVS does not have support for offline commits etc. and
that svk does, but moving from CVS to Subversion or Superversion at
this point would be a pretty major undertaking.  I prefer a saner
method of doing what I do now, within CVS with the inclusion of add-on
software if necessary.  My ideal situation would be the ability to
"check out" a repo tree and leave it locked in the central repo if
necessary while I'm gone, make my commits etc., then easily "check in"
the modified offline repo tree on returning, without having all this
trouble with letter casing in file and directory names.  The ability
to allow in-office commits simultaneous with out-of-office offline
commits would be wonderful, but I don't know how practical that is.

A couple details possibly worthy of note:  The central server is a
FreeBSD box running CVS 1.11.17.  The sandboxes are typically created
on Windows machines using CVS 1.11.9.  (If it will help, I can upgrade
the Windows machines to 1.11.17.)  I do occasionally make checkouts
under FreeBSD or Cygwin, but I never handle a given sandbox with a
different OS than the one that created it.

I've seen discussion of a commercial CVS replicator on this list
but didn't pay close attention.  A low-cost commercial package is
possible, but an expensive one, or one that is priced per user, is
not likely to make it into the picture right now.  I doubt a simple
use of `rsync' would be sufficient given the letter casing issues
I keep hitting.  It actually seems like I'm really looking for a
CVS for CVS repositories, where my thumb drive or on-site repo copy
is a sandbox and the central repo itself is another sandbox that
remains always checked out; but the idea of merging changes to a repo
file sort of boggles my mind a bit. :-)

All advice welcome.

Thanks much.

-- 
Doug Lee           address@hidden        http://www.dlee.org
BART Group         address@hidden   http://www.bartsite.com
"Nearly all men can stand adversity, but if you want to test a man's
character, give him power." -Abraham Lincoln




reply via email to

[Prev in Thread] Current Thread [Next in Thread]