Single development branch with branches for bug fix in major versions.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Fri, 21 Oct 2011 15:40:16 +0300
changeset 1060 3d6440915224
parent 1059 d5b0b9cc4b49
child 1061 4c3c9b4f8d73
Single development branch with branches for bug fix in major versions.
devel-proj-branching.rst
--- a/devel-proj-branching.rst	Fri Oct 21 14:06:03 2011 +0300
+++ b/devel-proj-branching.rst	Fri Oct 21 15:40:16 2011 +0300
@@ -70,3 +70,78 @@
 
 TODO
 
+Single line workflow.
+---------------------
+
+ * Only single development branch exist.
+ * Release means finish developing set of features and bug fixes on branches and
+   moving product build to release server..
+ * After testing and stabilising release was made. This means:
+
+   * VERSION file was updated.
+   * CHANGE file was filled with feature set, version, data and VCS revision
+     number.
+   * Mark release by tag in VCS.
+   * Invoke build of sources which marked by tag. Copy result to release server.
+
+ * If bug discovered in some version, it fixed at development branch and
+   released with new minor/fix product version.
+ * Previous major/minor releases do not supported (just use latest release).
+   Users always forced to update to latest release.
+ * Each new release placed in hierarchy::
+
+     /vendor/product/XX.YY.ZZ/*
+
+   and symlinked to::
+
+     /vendor/product/latest/
+
+Example of release timeline::
+
+  +--+------+------+------+------+------+------+------+------+---->
+  dev|      |      |      |      |      |      |      |      |
+     v      v      v      v      v      v      v      v      v
+    t0.1.0 t1.0.0 t1.0.1 t1.1.0 t1.1.1 t1.1.2 t1.2.0 t2.0.0 t2.1.0
+
+Single development branch with branches for bug fix in major versions.
+----------------------------------------------------------------------
+
+ * Each major release have **own** branch.
+ * Another single branch reserved for development.
+ * Latest major relase branch is active. All older major branches is passive.
+ * Passive major branches was used for **only** for minor bug fixes on latest
+   code from this major version series (no new features).
+ * Features developed in development branch. Before release in merged to active
+   major release branch.
+ * Bug was fixed in oldest major version branch for which it must be provided
+   and merged to all next major version branches and development branch.
+ * Release means finish developing set of features and bug fixes on branches and
+   moving product build to release server..
+ * After testing and stabilising release was made. This means:
+
+   * VERSION file was updated.
+   * CHANGE file was filled with feature set, version, data and VCS revision
+     number.
+   * Mark release by tag in VCS.
+   * Invoke build of sources which marked by tag. Copy result to release server.
+
+ * If bug discovered in some version, it fixed at development branch and
+   released with new minor/fix product version.
+ * Previous major/minor releases do not supported (just use latest release).
+   Users always forced to update to latest release.
+
+Example of release timeline::
+
+  +--+-----+--------+------+------+----+------+------+----->
+  dev|     |        |      |      |    |      |      |
+     |     |        |      |      |    v      v      v
+     |     |        |      |      |    +--+------+------+-->
+     |     |        |      |      |    b2 |      |      |
+     |     |        |      |      |       v      v      v
+     |     |        |      |      |      t2.0.0 t2.0.1 t2.1.0
+     v     v        v      v      v
+    t0.1.0 +---+------+------+------+------+------+------+--->
+           b1  |      |      |      |      |      |      |
+               v      v      v      v      v      v      v
+              t1.0.0 t1.0.1 t1.1.0 t1.2.0 t1.2.1 t1.2.2 t1.2.3
+