Assumption that the current state of master will constitute the release...
Make the following checks before performing a release:
- Do all unit tests pass?
- Do all programs/tools work?
- Has the documentation been updated?
Check this for all parts (e.g. dont' forget the test sequence generator)
The structure is: major . minor . revision. The revision part is not included if it is zero '0' (just after a major or minor increment).
- major = significant incompatible change (e.g. partial or whole rewrite).
- minor = some new functionality or changes that are mostly/wholly backward compatible.
- revision = very minor changes, e.g. bugfixes.
The is in the CHANGELOG.md
file. Ensure it mentions any noteworthy changes since the previous release.
Create the branch, naming it after the release version number (just the number).
Put a shorter summary of the new changelog items into the release notes. Make the tag name the version number (the same as the branch name).
This example assumes your local repository is a clone and the working copy is currently at the head of the master branch, and that this is all synced with GitHub.
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
Run unit tests:
$ python tests/test_all.py
$ cd test_sequence_gen
$ python tests/test_all.py
$ cd ..
And run all the tools, including the test sequence generator, to check they work!
The remainder of this example sequence will assume we have decided to do a release "X.Y.Z"
Modify CHANGELOG.md
e.g. using vi
:
$ vi CHANGELOG.md
.. update change log ..
$ git add CHANGELOG.md
$ git commit -m "Changelog update ready for release"
$ git push origin master
Create new branch (locally):
$ git checkout -b 'X.Y.Z'
Update CHANGELOG.md to remove "latest" heading. Then commit.
$ git commit -m "Release branch"
Finally branch up to github (and set local repository to track upstream branch on origin):
$ git push -u origin 'X.Y.Z'
Now use the new release function on GitHub's web interface to mark the branch 'X.Y.Z' as a new release.