
On 5/4/07, David Abrahams <dave@boost-consulting.com> 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