Edit on GitHub
Mattermost tick-tock Branching Strategy
Mattermost uses a tick-tock release strategy where every other release is a “quality release” that only has bug fixes and no new features.
The following diagram provides an overview of the branching strategy used to accomplish this. As an example, release-5.4 is a feature release and release-5.5 is a quality release. Note the “quality release” branch is based on the previous release branch.
Cherry Pick Process - Developer
When your PR is required on a release branch, you will follow the cherry picking process.
- Make a PR to ‘master’ like normal.
- Add the appropriate milestone and the
- When your PR is approved, it will be assigned back to you to perform the merge and any cherry picking if necessary.
- Merge the PR.
- An automated cherry-pick process will try to cherry-pick the PR. If the automatic process succeeds, a new PR pointing to the correct release branch will open with all the appropriate labels.
- If the automated cherry-pick fails, the developer will need to cherry-pick the PR manually. Cherry-pick the master commit back to the appropriate releases. If the release branches have not been cut yet, leave the labels as-is and cherry-pick once the branch has been cut. The release manager will remind you to finish your cherry-pick.
- Set the
CherryPick/Done label when completed.
- If the cherry-pick fails, the developer needs to apply the cherry-pick manually.
- Cherry-pick the commit from
master to the affected releases. See the steps below:
- Run the checks for lint and tests.
- Push your changes directly to the remote branch if the check style and tests passed.
- No new pull request is required unless there are substantial merge conflicts.
- Remove the
CherryPick/Approved label and apply the
- If the PR need to go to other release branches, you can run the command
/cherry-pick release-x.yz in the PR comments and it will try to cherry-pick it to the branch you specified.
Cherry Pick Process - Reviewer
If you are the second reviewer reviewing a PR that needs to be cherry-picked, do not merge the PR. If the submitter is a core team member, you should set the
Reviews Complete label and assign it to the submitter to cherry pick. If the submitter is a community member who is not available to cherry pick their PR or can not do it themselves, you should follow the cherry pick process above.