|
ifw-daq
2.1.0-pre1
IFW Data Acquisition modules
|
ifw-daq adheres to Semantic Versioning.
Version cycle with rc's being optional.
1.0.0 -> 1.0.1-pre1 -> 1.0.1-pre2 -> 1.0.1-rc1 -> 1.0.1-rc2 -> 1.0.1
patch build release build release
The pre-releases "pre" and "rc" does not uniquely identify a commit as the same version number may be used for multiple commits. Only final releases (i.e. those without a "pre" or "rc" suffix) are official releases.
$ bump2version --tag --message="Release v{new_version}"
Pre-release bumps (pre and rc) simply use:
$ bump2version release # to bump pre -> rc, or $ bump2version build # to bump pre1 -> pre2 (or rc1 -> rc2)
To skip rc and make a release directly from "pre" you need to specify the new version like this:
$ bump2version --tag --message="Release v{new_version}" --new-version="x.y.z"
Directly after the release the next commit should bump the version to a pre-release of the next version. The next version should normally be minor version change, until a breaking change is made at which point the major version is bumped.
$ bump2version minor|major
When packing pre-releases the project should be bumped immediately following the release of the package such that the released package refers to the last commit with that specific version.
For final releases there is no ambiguity as there is only one commit and tag marked with the final version.
Example assuming version 1.1.0-pre1:
bump2version build
Assuming starting point is a development version x.y.z-preN this describes the steps involved for a release cycle.
Note: Normally version changes are pushed directly and not merged in to avoid any ambiguities.
Assumptions:
Note: The project is still in the development phase here.
Bumping development version can be done after each sprint or when a pre-release package of the project is made.
git fetch upstream master git checkout FETCH_HEAD
x.y.z-preN -> x.y.z-preN+1: bump2version build
git show
git push upstream HEAD:master
As project introduced a breaking change this requires a major version bump. The process is the same as "Bump development version" except instead of bumping build we bump major:
git fetch upstream master git checkout FETCH_HEAD
x.y.z-preN -> x+1.y.z-pre1: bump2version major
git diff HEAD~
git push upstream HEAD:master
As development phase stops for a planned release and enters quality control, this can be indicated by making release candidate versions which are suffixed with -rcN.
Here we move from x.y.z-preN -> x.y.z-rc1
git fetch upstream master git checkout FETCH_HEAD
x.y.z-preN -> x.y.z-rc1: bump2version release
git show HEAD
git push upstream HEAD:master
Use same steps as "bump development version".
To make a final release of a quality controlled release candidate it involves:
and should follow the steps below:
git fetch upstream master git checkout FETCH_HEAD
bump2version --tag --message="Release v{new_version}" release
git show HEAD
bump2version minor
git show HEAD
Push release and bump commits to master, as well as the tag:
git push upstream HEAD:master git push upstream refs/tags/vx.y.z
To make the tag show up in GitLab release simply edit tag to add release notes.