Kokua:Repository Strategy

Repository Strategy
(To be written...)

Branch Strategy
(To be written...)

Standard Branches
(To be written...)

Topic Branches
(To be written...)

Example


This diagram demonstrates an example scenario involving the following branches (from left to right):


 * S: The stable branch in the central repository.
 * R: The release branch in the central repository.
 * D: The dev branch in the central repository.
 * T1: A topic branch called topic-1, in some developer's personal repository.
 * T2: A (different) topic branch called topic-2, also in some developer's personal repository (possibly the same developer, possibly a different developer).
 * E: The exp branch in the central repository.

The following events occur in this diagram (chronologically, from top to bottom):


 * 1) topic-1 is branched from dev and has a new commit. This new topic branch is created for a specific purpose (e.g. fixing a certain bug, or implementing a certain feature).
 * 2) topic-1 is merged into exp, so that it can be tested in the wild.
 * 3) topic-2 is branched from dev and has a new commit. Like topic-1, this branch is created for a (different) specific purpose.
 * 4) topic-1 is merged back into dev. Presumably it has been tested in an Experimental release, and found to be stable enough to merge into the main line.
 * 5) topic-2 is merged into exp, so that it can be tested in the wild. At this point, exp contains both topic-1 and topic-2.
 * 6) topic-2 has a new commit, perhaps a bugfix (related to this feature), polish, or further development of the feature.
 * 7) topic-1 has a new commit, perhaps a bugfix (related to this feature), polish, or further development of the feature.
 * 8) topic-1 is merged into dev and exp. This topic branch is now considered finished, and can be deleted after the merging is complete. At this point, dev contains only topic-1, while exp contains topic-1 and part of topic-2.
 * 9) dev is merged into topic-2. Now topic-2 contains the final version of topic-1.
 * 10) dev is merged into release. This marks a beta version or release candidate (e.g. "1.0.0 beta 1" or "1.0.0 RC1").
 * 11) topic-2 has a new commit, perhaps a bugfix (related to this feature), polish, or further development of the feature.
 * 12) topic-2 is merged into both dev and exp. This topic branch is now considered finished, and can be deleted after the merging is complete. At this point, both dev and exp are fully up to date with  both topic-1 and topic-2.
 * 13) dev is merged into release. This marks another beta version or release candidate (e.g. "1.0.0 beta 2" or "1.0.0 RC2").
 * 14) release is merged stable. This marks a full release (e.g. "1.0.0").