author | Oleksandr Gavenko <gavenkoa@gmail.com> |
Mon, 19 Oct 2015 17:04:52 +0300 | |
changeset 1769 | cadd23f8127f |
parent 1334 | 9bf0d5a1f0cf |
child 1905 | fba288d59662 |
permissions | -rw-r--r-- |
1334
9bf0d5a1f0cf
Include common header with quick links.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1061
diff
changeset
|
1 |
.. -*- coding: utf-8; -*- |
9bf0d5a1f0cf
Include common header with quick links.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1061
diff
changeset
|
2 |
.. include:: HEADER.rst |
1032
4decc3e00bb6
Fix coding and contents.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1026
diff
changeset
|
3 |
|
1019 | 4 |
=========================== |
5 |
Project branching models. |
|
6 |
=========================== |
|
7 |
.. contents:: |
|
8 |
||
9 |
Branch types. |
|
10 |
============= |
|
11 |
||
12 |
Development branch. |
|
13 |
------------------- |
|
14 |
||
15 |
* For main development activities. |
|
1025 | 16 |
* For bug fixes, small enhancements. |
17 |
* For development on initial project stage. |
|
18 |
* Does not for experimental features! |
|
1019 | 19 |
|
1049 | 20 |
Names: dev, devel, master, trunk, default |
1019 | 21 |
|
1025 | 22 |
Feature branch. |
23 |
--------------- |
|
24 |
||
1049 | 25 |
* For experimental features, that can be striped. |
1025 | 26 |
* For large changes that can break main development. |
27 |
* For incompatable changes that can break main development. |
|
28 |
||
29 |
Names: feature-xxx |
|
30 |
||
1019 | 31 |
Release branch. |
32 |
--------------- |
|
33 |
||
34 |
* Used to support long running major/minor versions (include bug fixes or |
|
35 |
features backporting). |
|
36 |
* No any new features development. |
|
1020 | 37 |
* Release branch created from development branch. Decision about branching come |
38 |
from release manager after reviewing code quality by QA team. |
|
1019 | 39 |
* From release branch you make tags to product releases for customer. |
40 |
||
1055 | 41 |
Names: vXX.YY.ZZ, maint, stable |
1021 | 42 |
|
1054 | 43 |
Custom branches. |
44 |
---------------- |
|
45 |
||
46 |
Custom branches intended to store modification to main release to make custom |
|
47 |
product build. |
|
48 |
||
49 |
Don't use custom branches at all. Instead redesign project to use customizable |
|
50 |
build. Expected problem: |
|
51 |
||
52 |
* You must manually propagate bug fixed to all custom branches. |
|
53 |
* It is not possible merge custom branches back to development branch. |
|
54 |
||
1026
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
55 |
Workflows. |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
56 |
========== |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
57 |
|
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
58 |
Regular development workflow. |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
59 |
----------------------------- |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
60 |
|
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
61 |
Regular development stay in development or feature branches. |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
62 |
|
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
63 |
After completing feature set and testing feature branch merged with top of main |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
64 |
development branch tested again and merged to main development branch. |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
65 |
|
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
66 |
After completing feature set and testing main development branch merged to |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
67 |
release branch. |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
68 |
|
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
69 |
Bug fixing workflow. |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
70 |
-------------------- |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
71 |
|
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
72 |
TODO |
a6f51fcdb6f2
Regular development workflow.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1025
diff
changeset
|
73 |
|
1060
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
74 |
Single line workflow. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
75 |
--------------------- |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
76 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
77 |
* Only single development branch exist. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
78 |
* Release means finish developing set of features and bug fixes on branches and |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
79 |
moving product build to release server.. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
80 |
* After testing and stabilising release was made. This means: |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
81 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
82 |
* VERSION file was updated. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
83 |
* CHANGE file was filled with feature set, version, data and VCS revision |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
84 |
number. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
85 |
* Mark release by tag in VCS. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
86 |
* Invoke build of sources which marked by tag. Copy result to release server. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
87 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
88 |
* If bug discovered in some version, it fixed at development branch and |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
89 |
released with new minor/fix product version. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
90 |
* Previous major/minor releases do not supported (just use latest release). |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
91 |
Users always forced to update to latest release. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
92 |
* Each new release placed in hierarchy:: |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
93 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
94 |
/vendor/product/XX.YY.ZZ/* |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
95 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
96 |
and symlinked to:: |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
97 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
98 |
/vendor/product/latest/ |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
99 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
100 |
Example of release timeline:: |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
101 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
102 |
+--+------+------+------+------+------+------+------+------+----> |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
103 |
dev| | | | | | | | | |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
104 |
v v v v v v v v v |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
105 |
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 |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
106 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
107 |
Single development branch with branches for bug fix in major versions. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
108 |
---------------------------------------------------------------------- |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
109 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
110 |
* Each major release have **own** branch. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
111 |
* Another single branch reserved for development. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
112 |
* Latest major relase branch is active. All older major branches is passive. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
113 |
* Passive major branches was used for **only** for minor bug fixes on latest |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
114 |
code from this major version series (no new features). |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
115 |
* Features developed in development branch. Before release in merged to active |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
116 |
major release branch. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
117 |
* Bug was fixed in oldest major version branch for which it must be provided |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
118 |
and merged to all next major version branches and development branch. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
119 |
* Release means finish developing set of features and bug fixes on branches and |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
120 |
moving product build to release server.. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
121 |
* After testing and stabilising release was made. This means: |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
122 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
123 |
* VERSION file was updated. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
124 |
* CHANGE file was filled with feature set, version, data and VCS revision |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
125 |
number. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
126 |
* Mark release by tag in VCS. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
127 |
* Invoke build of sources which marked by tag. Copy result to release server. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
128 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
129 |
* If bug discovered in some version, it fixed at development branch and |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
130 |
released with new minor/fix product version. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
131 |
* Previous major/minor releases do not supported (just use latest release). |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
132 |
Users always forced to update to latest release. |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
133 |
|
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
134 |
Example of release timeline:: |
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
135 |
|
1061
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
136 |
+--+-----+----------------------+-----+----+------+------+-----> |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
137 |
dev| | ^ ^ | | | | | |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
138 |
| | | | | | v v v |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
139 |
| | | | | | +--+------+------+--> |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
140 |
| | | | | | b2 | | | |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
141 |
| | | | | | v v v |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
142 |
| | | | | | t2.0.0 t2.0.1 t2.1.0 |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
143 |
v v | | v v |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
144 |
t0.1.0 +---+------+-+---+-+-----+------+------+------+------+---> |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
145 |
b1 | | | | | | | | |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
146 |
v v v v v v v v |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
147 |
t1.0.0 t1.0.1 t1.0.2 t1.1.0 t1.2.0 t1.2.1 t1.2.2 t1.2.3 |
1060
3d6440915224
Single development branch with branches for bug fix in major versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1055
diff
changeset
|
148 |
|
1061
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
149 |
In this example we release tags **1.0.1** and **1.0.2** with bug fixes in branch |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
150 |
**1** as development branch was not ready for production. |
4c3c9b4f8d73
Show bug fixes in branches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1060
diff
changeset
|
151 |