Last month we derived from the above several principles related to version control containers in general. This month we wish to go a step further and apply those translations to changes/workspaces, baselines, and codelines to arrive at a concrete set of principles for version control.
As a refresher, when translating the OOD terms to version control terms, we concluded the following:
· Classes and packages correspond to any version control container: changes, workspaces, versions, configurations, baselines and codelines. Our version control objects are containers that have their own state, contents and unique identifier. Previously published notions of container-based/component-based SCM are a precedent for this frame of thinking.
· Abstraction/abstractness relates to the liveness or velocity of the flow of change/activity for an item's contents. A more conservative flow tries to conserve present value, while a more progressive flow tries to add value at a faster rate of progress.
· Stability directly relates to the level of quality assurance of an item. The stability of a container is the extent to which its contents are of consistently reliable quality.
Now lets use these to derive and explore principles of task-based development and principles of change-flow across multiple codelines to support project oriented branching, which is a natural extension of task-based development at the next level of scale and visibility.
General Principles of Container-Based Versioning
To begin, we will review our more general translations from last month, refine them a bit, and give them some names. The ones that are still too vague for our taste won't be listed as general principles, but will still be applied to derive more specific ones.