In the context of my work on the new architecture in the 4.0 branch, I would like to reach a consensus on a branch structure. I have been working on restructuring this branch as outlined in this post and the next stages will be commits that diverge from the master branch as they introduce breaking changes. This brings up the question of which branch structure we want to adopt.
So far, our branching structure for our releases looks like this:
| (master branch)
|
|
+ 3.7-beta1
|\
| \
| + 3.7-beta2
| |
| …
| |
| + 3.7.0
| |
| …
| |
| + 3.7.9
| |
| | (3.7 branch)
|
+ 3.8-beta1
|\
| \
| | (3.8 branch)
|
| (master branch)
I would intuitively like to make it possible to keep maintaining the 3.x release series while publishing releases in a 4.x series, which would also be open for general contribution (such as #6460).
In my experience, most contributions to our current master branch can be merged into our current 4.0
branch without much trouble. So I would like to make it possible to keep contributing on 3.x and I would take care of merging those changes in the new architecture.
This could be done either with a merge commit or by rebasing those further commits on top of the new architecture.
I would intuitively propose something like this:
- we delete the current 4.0 branch which is branching off from too far back in the past
- the
master
branch remains the branch from which we make the 3.x series. It remains the default branch of the repository - the
4.x
branch branches off master soon. From this branch, we have other branches for each minor release (4.0
,4.1
and so on), just like we do for the 3.x releases - I regularly merge the
master
branch into4.x
(rebasing could also be doable, but would probably be more work and would duplicate commits)
Once the new architecture is sufficiently adopted, it could become the default branch of the repository, which would not preclude us from continuing to maintain 3.x (for instance with a specific 3.x
branch).
Do you think that would be workable? Or would you expect a different workflow?