From Fedora Project Wiki

Tagging new release

Each release has X.Y.Z identification denoting a major, a minor and a revision number:

  • Major number is increased when AutoQA makes incompatible changes in its test API. (Not used currently, since no stable public API has been offered yet.)
  • Minor number is increased when AutoQA adds new features.
  • Revision number is increased when AutoQA adds new hotfixes, but no new features.

Major releases

The process is the same as for minor releases, just the branch is called release-X.0.

Minor releases

AutoQA uses release branches for every minor release. That means before tagging a new minor release a new branch is always created. If we want to create 0.X.0 release:

git checkout -b release-0.X master
# adjust the autoqa.spec file and commit
# cherry-pick the last commit to master
git tag v0.X.0 release-0.X
git push --tags origin master release-0.X

It is possible to create release-0.X branch immediately before tagging 0.X.0 release, or it is possible to do it much earlier - then we can use master for further heavy development and release-0.X for stabilization of the current features.

Purging old release branches

If we are sure we will no longer work on older releases (before 0.X), we can also delete older release branches. If Y < X, then we can delete release-0.Y:

git tag --contains release-0.Y  # This must output some tag (like v0.Y.3). 
                                # It ensures there's a tag at the tip of 
                                # the branch and therefore no work is lost.
git branch -D release-0.Y
git push origin :release-0.Y

Revision releases

All revision releases simply mean committing relevant changesets to the relevant release branch and tagging a new release:

git checkout release-0.X
# commit the hotfixes
# adjust the autoqa.spec file and commit
git tag v0.X.Y
git push --tags origin release-0.X