17/12 2013
Git branching strategy

A new strategy for our git branches - aiming to produce more frequent releases and a public beta space.

Dear developers,

our family of extensions has been enhanced in so many ways during the last months that it has become hard to keep track of the changes and new features involved. In addition some compatibility breaks between TER and GIT versions were inevitable due to conceptual shifts and potentially could lead to confusion and/or frustration for those eager to try out the new stuff. To address those issues and of course to improve maintainability we decided to introduce an established branching model.

Meet Git flow (optimised for TER sync)

We're going to have three branches for each extension: 'development', 'staging' and 'master':

New features or conceptual changes will first be done in the 'development' branch. This can be seen as bleeding edge and chances are not too little it may break your stuff in some way so you should be aware of that.

When it's time for a new feature to go into the next release it will first be merged into the 'staging' branch for everyone willing to try it in their individual setups. You can consider this branch the beta version of an upcoming release for us to gather your feedback and to retouch the code. Of course, code that reaches staging will be well tested and measures will be taken to make it either not break stuff or you will get informed about possible breakage.

Finally when the dust has settled and the new feature is proven to be bugfree it will be merged into 'master', tagged and released to TER making 'master' the stable branch. Newly added tags for releases will then be applied to 'staging' and 'development' as well of course to keep everything in sync.

Last but not least bugfixes are applied to the 'staging' branch and get merged into 'master' for a sooner or later bugfix release depending on the severity of the bug.

What will happen next?

flux is the first extension to move to the new branching model and an exceptional case right away: the current release is quite far behind the development version but we'd like to maintain that for some more time so there is one more staging branch named 'legacy' for upcoming 6.0.3 and 'staging' for the all new and shiny 7.0.0 which is planned to be released along with TYPO3 6.2 LTS.

To whom it may concern: Those brave folks working with the current masters should of course prepare to switch to the development branch anytime soon.

We are sure this new model will increase the frequency of releases and simplify the testing of new features with the least possible chance of breaking stuff.

Cheers,
Björn