We need to decide on our permanent Git workflow for releases.
Options:
develop
branchPlease respond with thoughts.
We do not have release branches, we've been treating master as the release branch. As we have a planned release 0.1.1, do we intend to have a release branch now and use that as an intermediary or continue to use master?For eg., I'm currently working on having consistent behaviour for access level precedence in frontend and backend, which is planned to be part of 0.1.1, do I base my branch off of develop or master, or a separate release branch 0.1.1?
The key moment to branch off a new release branch fromdevelop
is when develop (almost) reflects the desired state of the new release. At least all features that are targeted for the release-to-be-built must be merged in todevelop
at this point in time. All features targeted at future releases may not—they must wait until after the release branch is branched off.
If we used Git flow, the master branch would only be updated when we make a release. This allows master to be stable at all times. I think there’s value in having a single stable branch.
For example, imagine a scenario where we’re building a large feature and have 3 of 6 PRs related to that feature merged in. Then someone reports a critical bug, which we want to quickly fix and make a release.
If we were merging all new development into master, we’d have to create a new branch off of the last release tag and cherry pick and whatnot to just fix the one bug and do a release. Otherwise, if we branched off of master, we’d be merging incomplete work in (or we’d have a larger burden on individual PRs to be complete in themselves, which would incentivize large PRs rather than small and iterative ones, which I hope I don’t need to enumerate the disadvantages of). If we have a develop branch, then we could just make a hotfix branch off master, fix the bug, and make the release.
if you forget, the bugfix might stay downstream too long;
This is a good concern, but there’s an easy fix – automation.
In the spirit of making decisions quickly, we should go with git flow and set up the master --> develop automerge automation. The majority of the team (who expressed an opinon) is already in favor, and if Dom or anyone else has further concerns, please feel free to DM me.