CVS

Ben Pfaff pfaffben@msu.edu
27 Jun 2001 15:52:00 -0400


Edward Glowacki <glowack2@msu.edu> writes:

> The target audience for this application is not hard-core users of
> CVS or other sync utilities, but rather those people that know a little
> bit about them and have need to use several different sync/backup
> strategies for different things.  It can cover up the details of the
> different implementations under a homogenous interface, so the user
> doesn't have to learn the ins and outs of each system.  It should be
> easy to use, with online help (including examples!) and user input
> error checking and validation.

Heh.  I think you're going to have to think about error handling
long and hard.  It is easy to blow away oodles of work with some
of the tools we're discussing, if you're not careful (e.g., about
the direction of syncing).

> Basic operation
> ---------------
> 
> Basic operation involves checking directories for .esync files,
> which are then read in to determine the method to be used for
> syncing that directory.  For example, .esync might contain the
> following lines for use with CVS:
> 
> METHOD CVS
> REPOSITORY hurakan.cl.msu.edu:/home/cvs
> RSH_CMD ssh
>
> and when run, esync might do the following
> 
> setenv CVS_RSH ssh
> cvs -d hurakan.cl.msu.edu:/home/cvs update
> cvs -d hurakan.cl.msu.edu:/home/cvs commit

Okay.  What if I want a fresh copy of the directory from CVS?
Can I blow away the old one (or move it elsewhere) and run `esync
refresh directoryname'?  Might be useful.

> Commands        Description
> --------        -----------
> 
> ls              - list directories with their date, method, and repository
> 
> Example:
> 
>   docs        2001-06-15 23:15    rsync   hurakan.cl.msu.edu:/home/cvs/docs
>   thesis      2001-05-20 13:13    cvs     hurakan.cl.msu.edu:/home/cvs
>   data        2001-05-23 14:12    cvs     /home/cvs
>   temp        Never               none
>   book        2001-06-15 23:20    cvs     hurakan.cl.msu.edu:/home/cvs
>   galeon      2001-05-20 20:00    cvs     anonymous@anoncvs.gnome.org:/cvs/gnome

So does it need to do a full directory traversal of your HDD or
home directory to get this listing (look for .esync in every
directory), or do you have a ~/.esynctab or whatever that has all
the settings listed there?  The latter would be a lot faster; on
my laptop here it takes a few minutes to list all the directories
and subdirectories in my home directory because I've got so
fscking many of them.  (Well, half a second if it's cached, but
usually it isn't.)

> edit            - change parameters for a directory
> update          - run the update
> version         - display esync, cvs, and rsync versions (and other modules)
> test            - test connections
> (no command)    - show version and help
> interactive     - interactive mode?
> new             - setup directory using defaults

I'd add a `diff' command to compare repositories.
-- 
"Q:      How does a hacker fix a function which
         doesn't work for all of the elements in its domain?
 A:      He changes the domain."
--Thorfinn