Boost logo

Boost :

From: Gregory Dai (gregory.dai_at_[hidden])
Date: 2007-05-05 00:30:13


On 5/4/07, David Abrahams <dave_at_[hidden]> wrote:
>
>
> on Fri May 04 2007, Douglas Gregor <doug.gregor-AT-gmail.com> wrote:
>
> > On Wed, 2007-05-02 at 18:30 -0400, Beman Dawes wrote:
> >> That isn't at all what I had in mind. Rather, a release, say 1.35 would
> >> start with the previous release - 1.34 in this case. Developers, who
> >> have been working in devel (which is equivalent to the old HEAD),
> >> branch/tag their code at the point they think it is OK as "stable".
> Then
> >> when it comes time to do a release a script run by the release manager
> >> tries to merge code for the library from "stable" to the release
> >> candidate branch (working in library dependency order, with cycles
> >> broken when necessary).
> >
> > I'm a bit confused... is "stable" a branch, or just a way to refer to
> > certain points in the development of a library?
>
> What's the difference (in the SVN world)?

An possible SVN organization could look like the following:

-trunk/src ... tree
-branches/1.34/trunk/src ... tree
-branches/1.34/builds/001/src ... tree
-branches/1.34/builds/002/src ... tree
.... etc.

The trunk at the "root" sort of corresponds to the CVS main branch. They are
very much like directories. For example, at certain point when 1.35 is to be
branched, the admin or one with the privilege simply svn make directory
"branches/1.35/trunk" and then svn cp --recursive "trunk/src ... tree" to
there (not exact commands, just the idea). Now the whole becomes

-trunk/src ... tree
-branches/1.34/trunk/src ... tree
-branches/1.34/builds/001/src ... tree
-branches/1.34/builds/002/src ... tree
-branches/1.35/trunk/src ... tree
.... etc.

Note that SVN did not really make a verbatim copy of the whole directory
tree as is the case for directories in an ordinary UNIX file system. SVN
just makes a note of fact with record keeping such as a new version number,
but presents the results like the above.

As another example, when it's time for the admin to make build 001 of 1.35,
he svn-makes directory "branches/1.35/builds/001/" and then svn-copies
--recursive "branches/1.35/trunk/src ... tree" to there. Now the whole thing
becomes

-trunk/src ... tree
-branches/1.34/trunk/src ... tree
-branches/1.34/builds/001/src ... tree
-branches/1.34/builds/002/src ... tree
 -branches/1.35/trunk/src ... tree
-branches/1.35/trunk/001/src ... tree
.... etc.

It's like a snapshot of "branches/1.35/trunk/src ... tree" was taken and
placed under "branches/1.35/builds/001/". People may still check in changes
to "branches/1.35/trunk/src ... tree", while "branches/1.35/builds/001/src
... tree" is only accessible to the admin responsible for the interim build
1.35-001.

The same goes with "trunk/src ... tree" as the main branch, just as
"branches/1.35/trunk/src ... tree" is regarded as the 1.35 branch.

Hope this helps in terms of concept.

--
Greg

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk