[H-GEN] RCS Usage

Ben Fowler fowlerb at optushome.com.au
Wed Jun 19 12:20:07 EDT 2002


[ Humbug *General* list - semi-serious discussions about Humbug and     ]
[ Unix-related topics. Posts from non-subscribed addresses will vanish. ]

Hi Jason and all,

Please excuse the length of my post.

Jason Henry Parker wrote:
> So I'm finding that in order to be able to make and unmake changes as
> needed, I'm spending a few hours hacking (with an aim in mind), then
> creating a diff and selectively reapplying portions for separate
> checkin.  In theory this means that if I have to revert any change in
> functionality it should be easy (easi*er*, maybe) to do so.
> 
> I've also been rethinking RCS as a tool for development in small
> teams, and looking into various options (rcs -s, for example).  Do any
> of you have any stories or tips you'd like to share?

I'm unsure whether our experiences relate directly to what you're doing 
at the moment, but I'll share anyway :)  Your mention of "rcs -s" 
reminds me of a trick we use with release tagging in CVS to mark 
"baseline promotions", which I'll explain below.  I'm no CVS guru, but I 
figure that the rcs -s option is what CVS uses to implement tagging.

We use CVS (plus a couple of other neat tools like viewcvs and cvsgraph) 
at work.  I find that CVS is a better RCS than RCS :)

We have just started using CVS properly as part of our configuration 
management system and we find it a good fit.  We have several pieces of 
software which require a lot of developer effort and we've decided to 
implement an IEEE-like config management system (lots of policy plus a 
few tools).  We have the following requirements.  We need a thorough 
record of all changes made to the software.  We need a stable baseline 
from which to release from at all times.  We also need the ability to 
have multiple programmers independantly gut the source code being 
managed if they need to, without giving other people a hard time.

We've adopted a scheme where the trunk of the tree is always stable, and 
every time someone needs to fix a bug or three, or add a new piece of 
functionality, they file a 'config request' and a branch is created for 
them.  They can ask for any subsequent changes made to the stable trunk 
to be merged to their branch (config update request (CUR)), and they can 
request that their stuff gets merged back into the baseline, subject to 
tests passing, etc (closing the config request).

Each developer can create sub-branches and checkin, rollback, take 
diffs, selectively reapply changes etc on their own branches to their 
heart's content without trashing the rest of the tree.  Obviously, 
because of CVS' limitations, you need someone who knows what they're 
doing to be onhand to fix screwups and keep the system operating.

I particularly like CVS because of it's ability to tag sets of files, 
which comes in handy for baseline promotion.  Similar in concept to "rcs 
-s", we tag the trunk using standardised descriptive identifiers 
identifying the state of the baseline.  The trunk in CVS is always the 
"rock solid stable" part of the source tree, and its tag history should 
be a progression consisting of a number of merges from developers' 
working branches, plus tags for when it's "promoted", i.e. system tests 
have passed, releases have been cut, etc.  You can rename tags, and tag 
tags as well, which gives you the ability to promote a particular 
snapshot through a progression of milestones (system tests, integration 
tests, acceptance testing, release).

This system might seem a little complicated, but it appears to be 
achieving the goals we originally set out for it.  To ease the burder of 
administering this mess, I've been asked to write some web-based 
software to automate much of the process of accepting config requests, 
creating branches, closing CRs, etc etc - complete with Bugzilla [1] 
integration.  With luck, it'll be Open-Sourced, like much of the other
stuff we're building [2].

Anyway, I hope enough people find these comments interesting enough to 
justify the time I spent writing it.  Have fun.

-regards,

Ben.

[1]  Ask me sometime about the hassles I had choosing a suitable bug
      tracking system for our team at work.  I think that the fact there
      are so many defect/issue tracking systems out there
      points to the fact that few of them do most things well.  Bugzilla,
      despite it's warts, seems to work good enough for us.

[2]  http://titanium.dstc.edu.au/

-- 
Ben Fowler, email: <ben.fowler at humbug.org.au> pgp/gpg key id: FFDE6AF7
   vanity web page: <http://azure.humbug.org.au/~zuul/>

                       "Who now remembers the Armenians?" -- Adolf Hitler
                                    (see http://groong.usc.edu/fisk.html)


--
* This is list (humbug) general handled by majordomo at lists.humbug.org.au .
* Postings to this list are only accepted from subscribed addresses of
* lists 'general' or 'general-post'.  See http://www.humbug.org.au/



More information about the General mailing list