This project uses Semantic Versioning: MAJOR.MINOR.PATCH.
- Increment
PATCHfor bug fixes and documentation-only corrections. - Increment
MINORfor backward-compatible features. - Increment
MAJORfor breaking API or behavior changes.
The master branch should always represent the latest released version. Unreleased work is collected on the long-lived devel branch until it is ready to become the next release.
-
Branch feature and fix work from
devel. -
Open a pull request from each completed feature or fix branch into
devel. -
Review and merge the pull request into
devel. -
Record release notes in
CHANGELOG.mdunder[Unreleased]while work is still in progress. -
Keep
__version__incancermuts/__init__.pyat the latest released version whiledevelis accumulating unreleased changes. -
When
develis ready to release, choose the next version number, for example2.1.0or2.0.1. -
Update
__version__incancermuts/__init__.py. -
Move the relevant
CHANGELOG.mdentries from[Unreleased]into a new dated release section:## [X.Y.Z] - YYYY-MM-DD -
Commit the release preparation changes on
devel:git add cancermuts/__init__.py setup.py CHANGELOG.md RELEASE.md git commit -m "Release X.Y.Z" -
Merge
develintomaster:
git switch master
git merge devel- Create an annotated tag on the released
mastercommit:
git tag -a vX.Y.Z -m "Release X.Y.Z"- Push
master,devel, and the tag:
git push origin master devel
git push origin vX.Y.ZGitHub releases can then be created from the version tag, using the matching CHANGELOG.md section as the release notes.
For a patch release that cannot wait for the rest of devel, branch from master, apply only the fix, update the version and changelog, then merge and tag it in the same way:
git switch -c hotfix_X.Y.Z masterAfter the hotfix is released, merge master back into devel so the rolling branch includes the patch release.