2. Creating and Using a Maintenance Stream

2. Creating and Using
a Maintenance Stream
Many software development organizations have two main streams of development: work towards the next release, and maintenance of the previous release. Other SCM systems use a “branch based on a label” paradigm to accomplish this. AccuRev uses snapshots (static streams).
Creating a Snapshot
At the time of the release (say, “WidgetSoft Release 1.0”), create a snapshot:
accurev mksnap -s widget1.0 -b widget -t now
This creates a new snapshot called widget1.0. The snapshot contains whatever versions the widget stream contained at the time the mksnap command is executed. Subsequently, the widget stream can change as new versions are promoted to it, but the widget1.0 snapshot never changes. Instead of now, you can specify any time in the past, such as 2005/05/18 10:10:24.
Creating a Stream Based on the Snapshot
For maintenance work on this release, create a new dynamic stream based on the snapshot:
accurev mkstream -s widget_maint -b widget1.0
Initially, widget_maint will be identical to widget1.0, but it will change as people promote changes to it.
Performing Maintenance Work
Maintenance developers use workspaces based on the widget_maint stream. For instance, to make a maintenance fix, Mary might create a workspace like this:
accurev mkws -w widget_maint -b widget_maint -l <wherever>
When Mary promotes her maintenance work, the changes will go to widget_maint.
All maintenance work is isolated from the main development stream, and vice-versa. Developers working on the next release create their workspaces off the development stream, not the maintenance stream. For example:
accurev mkws -w widget -b widget -l <wherever>
Changes promoted from widget_justine will go to the main development stream, widget. The changes won’t appear in the widget_maint stream.
The Change Palette in the AccuRev GUI makes it easy to migrate changes back and forth between a main development stream (widget) and a maintenance stream (widget_maint).
 

Borland