You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Peter Howe <Pe...@uk.linedata.com> on 2005/03/04 10:26:31 UTC

Models for multi-version promotion

Hi

We currently use an old but powerful version control system based on VMS
hardware but we are planning to migrate to Subversion.  We support and
maintain about 7 versions of our product at any one time (let's say 1.0,
2.0, 3.0 ... 7.0) and any changes that we decide to "back fit" to
earlier releases are automatically merged forward to all later releases
(and into the production stream - which is the latest [unreleased]
development stream.)

For each release, we use a pretty standard "promotion model" - i.e. code
is unit tested in a developer's working directory, then it's put into
"WIP" in order to bring it together with other developer's changes and
ensure it doesn't break our overnight builds.  It is then promoted to
"TEST" for system testing and then "CAND" for integration testing.  Once
everything has passed testing in a candidate (CAND) build, we may choose
to make that candidate build a RELEASE.

So to summarise, for each version, we have WIP, TEST, CAND (and RELEASE
which is just a tag of CAND.)

Finally, we organise our work in small functional units (each of which
we call a CR and which has number for tracking purposes.)  Generally a
CR is unlikely to change more than about 10 files in a repository of
about 5000 files.  Note that CRs may be tested (and hence promoted) in a
different order to the order in which they were developed.

Do any of you have experience of similar models and if so, how do you
manage your branching and merging?

I have been thinking I need a 1.0-WIP line, with a 1.0-TEST branch and a
1.0-CAND branch off that (which can be copied to mark a RELEASE.)  Then
I need to branch 2.0-WIP from 1.0-WIP and then 2.0-TEST from 2.0-WIP and
2.0-CAND from 2.0-TEST, etc, etc...

When people want to start working on a CR (work unit), they'll create a
copy of the appropriate WIP line, tag the start of that line, make their
changes, mark the end of that line and merge back into the WIP stream.

But there's something about this which doesn't quite seem right.  One
thing is that if a CR takes a long time to complete, it doesn't seem
easy to merge the changes which have gone into WIP during that time into
the CR branch (in order to stay up to date.)  Also, the whole 1.0-WIP,
1.0-TEST etc. model described above doesn't really identify a clear
"main line" (trunk) which just seems wrong somehow.

Any advice, comments (or indeed criticism) will be very welcome!
Many thanks,
Pete


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org


Re: Models for multi-version promotion

Posted by Brad Appleton <br...@gmail.com>.
The basic promotion model has at least 2-3 levels for the "basic" 
handoffs from:
* [in-progress] development to "integration"
* integration to test
* and possibly test to release

The number of different promotion levels can vary greatly. The biggest 
factor has to do with the number+type of "hand offs" that occur from 
when code is first integrated to the time it is shipped out the door.
There might be multiple levels of integration (component integration,
subsysystem integration, system integration). And for each level of 
integration there might be a promotion level for any of the following:
   * Handoff to CM/Build group
   * Handoff to Test Group
   * Handoff ot QA Group
   * Handoff to Packaging/Distribution

Plus there might be more than one test group (for more than one kind of 
testing). Furthermore, if development is multi-sited, there might be an 
additional handoff from a remote site to a "central" site.

For more details on various implementation mechanisms for promotion 
models, take a peek at
* "Navigating the Ocean of Promotion Notions"
    <http://www.cmcrossroads.com/article/32900>

* "Streamed Lines" patterns on "Staged Integration Lines"
    <http://acme.bradapp.net/branching>

Cheers!
-- 
Brad Appleton <br...@bradapp.net> www.bradapp.net
    Software CM Patterns (www.scmpatterns.com)
    Effective Teamwork, Practical Integration
"And miles to go before I sleep" --Robert Frost

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org