Principles of Agile Version Control: From Object-oriented Design to Project-oriented Branching


General Principles of Container-Based Versioning

The Content Encapsulation Principle (CEP)

All version-control knowledge should have a single authoritative, unambiguous representation within the system that is its "container. In all other contexts, the container should be referenced instead of duplicating or referencing its content.



The Container-Based Dependency Principle (CBDP)

Depend upon named containers, not upon their specific contents or context. More specifically, the contents of changes and workspaces should depend upon named configurations/codelines.



The Identification Insulation Principle (IDIP)

A unique name should not identify any parts of its context nor or of its related containers (parent, child or sibling) that are subject to evolutionary change.



The Acyclic Dependencies Principle (ADP)

The dependency graph of changes, configurations, and codelines should have no cycles.



Note that the CEP is simply the DRY Principle being used to create the version-control equivalent of a "class." The "container" is the unit of encapsulation for our purposes. This is what allows us to apply all the other OOD principles to the domain of version-control.

About the author

About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.