User:Kparal/Sandbox:Git release process

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 git tag v0.X.0 release-0.X git push --tags origin master release-0.X
 * 1) adjust the autoqa.spec file and commit
 * 2) cherry-pick the last commit to master

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 git tag v0.X.Y git push --tags origin release-0.X
 * 1) commit the hotfixes
 * 2) adjust the autoqa.spec file and commit