info-cvs
[Top][All Lists]
Advanced

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

Usage pattern - $HOME as cvs co - a broad outline please


From: Harry Putnam
Subject: Usage pattern - $HOME as cvs co - a broad outline please
Date: Sat, 10 Nov 2001 11:58:21 -0800
User-agent: Gnus/5.090004 (Oort Gnus v0.04) Emacs/21.1 (i586-pc-linux-gnu)

Setup: OS =  Redhat Linux
       cvs = 1.11.1p1 (client/server)

Only an amatuer user of cvs, mainly keeping such things as machine
config files, home made scripts, *rc files and the like in cvs
repository.

So far, I use this repository across three home machines.  Over time,
more and more things have found there way into the repository.

I find, it begins to be a chore, commiting updating adding
things. Then getting current versions into position for use, like a 
$HOME .emacs, or /etc/sendmail.cf, or more commonly, updated versions
of homeboy scritps that I constantly play with.

I keep 30-40 home made scripts in $HOME/scripts/*.  With
subdirectories like shell/ awk/ perl/ function_lib/
These are mirrored in $CVSROOT for each machine like this:

$CVSROOT/machine/home/reader/scripts/*
So $CVSROOT has major modules machine1 machine2 machine3
And each machine has a checked out module at:
$HOME/t/machineN

This funky setup means that all activity requires:
1) cd to checked out module
2) add edit remove commit etc (usally consistes of overwriting
   scripts within the module from current in use versions and 
   committing, or adding new files and commiting.  It means things
   like diffing working version against last commited version require
   first to copy the altered (working) version into module then diff
   etc.

This can result in quite a lot of huffing and puffing, keeping up
with changes.

As I've gone along, certain files/directories have emerged as most
often changed and needing committing.  With those files, I have now
symlinked the module hard copy to $LOCATION/file.  Any changes go
direct to the Module copy eliminating the part of copying a working
file into module before commit.

Somehow I get the feeling that this is a very clunky way of doing
things and have started wondering how it would work to make $HOME on
each machine a `checked out' module.  That way I would `live' in the
module, eliminating some of the huffing and puffing.

It would allow me to `cvs commit', without the `copy from working
location to module' step.  I could just `cvs status' to see if there
are unremembered commits to make.

However, it seems there would be problems along that route in this
way:
   The vast bulk of files in the module would never be added or
   committed.  Things like tons of mail/news and other transient
   stuff.  Will CVS complain about all the detritus in its module?

   If I made an inadvertant `cvs add .'  Would cvs tear thru thousands
   of files adding them?  If I never commit after such an event can I
   erase the thousands of additions easily?

   Are there other nasty problems that would result from having $HOME
   be a cvs checked out module? Or /etc/ for that matter?
   Am I better off with symlinking individual files/directories as I
   have been doing? 

   How would one begin such a plan?  That is, what structure to import
   in $CVSROOT, then how to go about checking out the needed module
   and making it the real /home/$USER?


reply via email to

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