On Monday, 10 December 2012 at 23:41:25 UTC, Andrei Alexandrescu wrote:
(One piece that has been brought forward is http://nvie.com/posts/a-successful-git-branching-model/ - something to keep in mind.)


In this workflow, only one version of the software is produced. But we have an extra need : the one to combine language evolution (that may break) and long term support. This require some adjustment.

Here is how I see things :

New feature are develloped in their own branches.
When a feature is ready, it is included in the dev branch. The feature must be rebased on the dev branch to be included. From time to time, dev branch is forked. The forked branch only receive bug fixes. The second digit of the version is incremented (minor). I'll call it stabilization branch. When the fork branch is stable enough, a tag is made and we have a realease. The revision number is incremented. In the future, more bug fixes can be done in that branch and new tag created for new release.

No let's focus on bug fixes. As feature, they are made in their own branches. The branch will then be merged in any stabilization branch where it make sense and in dev.

master is the highest numbered stabilization branch. By doing so, we ensure that user that get sources have a preview of the next thing that will be shipped.

I would advice against maintaining a lot of stabilization branches as this is more work and too much of them don't bring any benefit. 2 to 3 of them is the right amount.

The proposal works well with github, which is a plus considering we are using it.

Reply via email to