Skip to content

Branches & Releases

Joshua Schmid edited this page Jul 31, 2019 · 3 revisions

Branches & Releases

This entry will give an overview of how this project handles releases.

Branching guideline

We have a mainline branch called master. We have the incentive to not break master

This project is the part of SUSE's Enterprise Storage Product and therefore tied to it's release cycles. The releases are reflected in the branch naming scheme. We have also have signed tags that mark releases within this versions.

SUSE Enterprise Storage version 4

lives in branch SES4. For this version we used tags starting with v0.7.x

SUSE Enterprise Storage version 5

lives in branch SES5. For this version we used tags starting with v0.8.x

SUSE Enterprise Storage version 6

lives in branch SES6. For this version we used tags starting with v0.9.x

Creating a Release

There are 'package' branches for each of the major DeepSea versions (SES5-package, SES4-package, SES6-package). When a package needs to be built, the branch will be updated with the desired commits and a tag will be applied at its tip. Following the 'package' branch approach make releases 'trackable' and helps to avoid history rewrites in case of a slide-in.

Workflow

On the example of SES5

The SES5 branch and the SES-package branch get merged regularly. When a release is planned, you create a tag on the tip of the branch.

git tag -s -a v.x.x.x -m 'Release x.x.x'

If for a reason the tagged version has issues and needs an additional fix which is

  1. Not in SES5

Look in the master branch if there is a fix. If this fix is viable consider backporting it. See the backporting wiki for guidance.

  1. Not in master

Go, create it and follow the backporting wiki

After the fix landed in SES5 you can cherry-pick onto the SES5-package branch.

git cherry-pick -s -x $sha (-S when you want to gpg-sign it)

You now have to move the tag one commit forward.

git tag -d v.x.x.x

git tag -s -a v.x.x.x -m 'Release x.x.x'

This creates a tag locally. If you want to push it to the repository, you can do that by:

git push v.x.x.x

if that tag already exists you have to force push it

git push +v.x.x.x