Can I maintain config files as a CVS branch w/o messing up mergemaster etc.?

David Wolfskill david at catwhisker.org
Thu Apr 29 18:35:19 PDT 2004


>Date: Thu, 29 Apr 2004 17:59:18 -0400
>From: Doug Lee <dgl at dlee.org>
>To: freebsd-stable at freebsd.org
>Subject: Can I maintain config files as a CVS branch w/o messing up
>Sender: owner-freebsd-stable at freebsd.org

>I track STABLE and wonder if there's a clean way for me to use CVS to
>do it (without having the whole CVS repo on my box).

I also track -STABLE (as well as -CURRENT); however, my approach is to
go ahead and maintain a private mirror of the CVS repo.  (Actually, I do
this on a couple of boxen, one of which is my laptop.  The CVS repo on
my laptop is thus actually a mirror of my private mirror.)

Disk space is not all that expensive nowadays; the repo appears to take
right around 2 GB:

g1-15(4.10-P)[1] cd /cvs/freebsd/
g1-15(4.10-P)[2] du -ks .
2084040 .
g1-15(4.10-P)[3] 

And I find it handy to have the repo on my laptop.  (I run a Web server
on it, too, so I can play with cvsweb locally, even if I'm disconnected
from the Net.)


>Example:  I
>modify /etc/rc.firewall and then cvsup my way up to a more current
>STABLE.  The normal tactic is to hand-merge via mergemaster, but I
>think there should be a way for me to get CVS to do it:

Yes, well....  I could be wrong about this, but I would expect that
having different files in the same (CVS working) directory have their
histories &c. in different CVS repositories would be awkward, at best.
After all, a given directory may have at most one "CVS" subdirectory.

That said, I do this sort of thing for /usr/src/sys/i386/conf:  the
original files I leave alone; my working kernel config files are merely
represented by symlinks (in my case, to /usr/local/src/kernels/...), and
the latter hierarchy is in a local CVS repository (parallel to the
FreeBSD one).  (Source control is A Good Thing.)

>    cvsup/mergemaster for fresh system (hypothetical of course)
>    (current /etc/rc.firewall is now exactly the STABLE version)
>    make local mods
>    cvs commit mods (locally)
>    cvsup
>    use CVS instead of Mergemaster to merge in changes since last cvsup

Along with the above, I use mergemaster.

Frankly, after doing this for over 2.5 years (tracking each of -STABLE
and -CURRENT on a daily basis, missing a total of maybe a dozen days in
that time for -STABLE; perhaps twice that for -CURRENT), I find it
rather simple and straightforward.  I would be hard-pressed to come up
with a reason for wanting to find a different approach.  (My build
machine -- which is presently powered off -- has built something along
the order of the 875th iteration of its -STABLE kernel since /usr/obj
was last cleared.  The laptop's numbers are considerably smaller, as I
needed to replace the disk drive a few months ago.  And -CURRENT tends
to need clearing /usr/obj a bit more often than -STABLE does.  :-})

Peace,
david
-- 
David H. Wolfskill				david at catwhisker.org
I do not "unsubscribe" from email "services" to which I have not explicitly
subscribed.  Rather, I block spammers' access to SMTP servers I control,
and encourage others who are in a position to do so to do likewise.


More information about the freebsd-stable mailing list