Bonjour,
For 0.5.2 we chose to merge back to master because that’s what we’ve done for 0.5 and 0.5.1. Moving forward it would be easier and more consistent (as discussed in a separate thread) to create a release/0.X branch from develop for the release and tag the commit to be released with 0.X.0. Instead of abandoning the branch, we keep the branch, in case we need to publish a release with just a few important fixes, like 0.5.2.
The only change required to make that work is that all commits added to the release/0.X branch must be cherry-pick -x
from develop. We never fix a bug in the release/0.X branch, we fix it in develop. This will not cause conflicts (or simple ones) during the release/0.X.0 QA because it was recently cut from develop. It will become increasingly difficult as time passes. But since our release cycle is 6 weeks, it won’t get out of hands.
Of course there will always be exceptions, i.e. fixes that do not make sense in develop and that we must add to the release branch. When that happens the commit message is expected to clearly articulate why this commit is unique to the release branch.
Current release cycle
For a major release:
- branch release/0.X.Y from develop
- fix bugs in release/0.X.Y
- merge back fixes from release/0.X.Y to develop daily so all commits in release/0.X.Y are also in develop
- release from the release/0.X.Y branch
- merge release/0.X.Y to master
For a bug fix release 0.X.Y+1
- fix all bugs in develop
- branch release/0.X.Y from master
- cherry-pick -x only the commits we need from develop
- fix bugs discovered in QA in develop and cherry-pick -x them in release/0.X.Y
- release from the release/0.X.Y branch
- merge release/0.X.Y to master
- tag the tip of master as 0.X.Y
Proposed release cycle
A major release is 0.X.0 instead of 0.X and follows the same steps as bug fixes releases
For a major release:
- branch release/0.X from develop
For each release 0.X.Y
- fix bugs in develop and cherry-pick -x them in release/0.X
- tag the commit of the release as 0.X.Y
- release from the 0.X.Y tag
What do you think ?