Forum OpenACS Q&A: Beta, Branches, and Tags, oh my!

Posted by C. R. Oldham on

Last night I checked out the beta (or so I thought) and began the
process of merging our development branches with the new beta.  I'm
confused about the branch/tag in CVS.  If I do a cvs status on
packages/acs-tcl/tcl/defs-procs.tcl for example I see this:

  Existing Tags:
    oacs-4-5-beta-1-2            (revision: 1.9)
    oacs-4-5-beta-1-1            (revision: 1.9)
    oacs-4-5-beta-1              (revision: 1.9)
    oacs-4-5                    (branch: 1.9.2)
    initial-dev                  (revision:
    OpenACS                      (branch: 1.1.1)

When I started to merge I did 'cvs -r oacs-4-5 update -d -P'.  That
should have switched me to the oacs-4-5 branch, but I didn't realize
there were tags in there, too.  Did I make a mistake?  Are all the
bugfixes being applied to oacs-4-5-beta-1-2, or is that just the tag
that the tarball is being made from?

Am I right in assuming that there will eventually be an oacs-devel

Posted by Don Baccus on
The development branch is the untagged branch you'd get by not specifying any revision at all.  That seems to be the normal way to do things (at least Ron Henderson suggested doing it this way in his document for the ASJ).

I made the "beta-1-1" and "beta-1-2" tags as a result of "infant mortality"-level gotchas in my first two efforts to make a beta tarball.  That's cheating in a sense but I caught them early enough that only a few folks had downloaded the beta tarball so decided it was OK.

The tags are there to make it easier to merge bug fixes applied to the 4.5 branch to the development branch.  Currently all the patches applied up to "beta-1-2" are in the development branch.  I'll be adding some more patches as we march on to full release as folks have been making patches to fix obvious bugs in the beta version.  Depending on feedback from Simon Millward and friends the next tag will be "beta-2" or "final" and recent bug fixes will then be merged into the development tree.

The multiple tags are necessary to avoid spurious errors when merging branches that come about from trying to apply the same code to the target branch twice.

In other words, to merge the last round of patches into the development branch I essentially said "merge all changes from 'beta-1-1' through 'beta-1-2' into the development branch".

Without the additional tags it would try to merge all the changes from  the point where I initially branched 4.5, even the once that had already been merged, thoroughly confusing CVS and making it hard to weed out real merge conflicts from bogus ones.

Posted by C. R. Oldham on
So it sounds like checking out on the 4.5 branch is OK, am I correct?