Saturday, March 29, 2008

Stream flow

In order to work with streams there's a handy GUI tool called Stream Browser which, at the moment of writing this, has not an user manual but it's well worthy the effort of learning it just reading its help. Personally I consider this tool the soul of Accurev.

When I first started with the tool I was trying desperately to understand if the X and Y axises of the chart where the streams are located and connected to each other, had some meaning... probably time or some other magnitude. I couldn't find a written answer to this.
I finally came to understand that within the stream chart the Y axis helps to:
1-Differentiate among several projects
2-Differentiate equivalent areas within a project with different versioning status.
In the other hand the X axis talks about the Upstream if we move to the left and the Downstream if we move to the right. Those movements involve two new Accurev key concepts. Promotion and Inheritance.

I'd like to mention a couple of sources for understanding Stream Flow
Stream-Based Architecture of SCM
Understanding-accurev-stream-inheritance-the-short-version
Even when it takes some time getting the idea behind streams it is well worthy the effort...

At this point I can mention some key point that helped me to get the picture so far...
  1. After installing Accurev we create a Depot and the first Workspace; the Depot is represented for a "root stream"on the left of the chart and right to its right we found the connected Workspace Stream; just 2 blocks connected by a segment.
  2. Workspaces are the only streams that have the ability to interact with the real directory where the Project files we want to put under versioning control reside. Workspaces are the gateways between the Accurev versioning control world and the Project real files.
  3. Our work in a project is performed over the project source files, we tell to the OS to "save" those files when we consider we've got something that deserves to be kept... in a similar way we tell to the related Accurev Workspace to perform a "keep" command to keep under the Workspace control the new set of modified files.... The OS save command "overwrites" the previous version, the Workspace keep command "adds" a new version keeping the former one.
  4. Workspaces have an owner; a programmer. Many programmers can be assigned to work on the same project set of files, but every workspace keeps every programmer's work "private" as long as this work resides on the Workspace.
  5. When programmer's work reach a certain maturity point can be "promoted" to a higher hierarchy stream (upstream) using the "promote" command. After doing this the programmers work becomes public to the programmers community following the rules of promotion & inheritance.
The basics rules of Stream flow.
Promotion casts the programmer work upstream while Inheritance bring it back downstream.
A stream con only have one stream upstream but many ones downstream.
A Root stream cannot have any upstream stream.
A Workspace cannot have any downstream stream.

No comments: