Automatic conventional version
Project description
GIT-CONVENTIONAL-VERSION
Find version automatically based on git tags and commit messages.
The tool is very specific in its function, so it is very flexible.
You can use it as a part of many different integrations and it will not break your process.
Install
python3 -m pip install git-conventional-version
Usage
Get new bumped final version:
gcv
Get new bumped release candidate version:
gcv --type=rc
Get current (old) version, 0.0.0 if none exists:
gcv --old
Example of CI automation script:
old=$(gcv --old)
new=$(gcv)
# check if version bump would happen
if [ ! $new == $old ]; then
# if yes, update setup.cfg
sed -i "s/^version.*/version = $new/g" setup.cfg
# and commit release
git add setup.cfg
git commit -m "$new"
git tag "$new"
git push --tags
git push
fi
Version formats
Tags are equivalent to versions, no suffix or prefix is added or interpreted. Formats follow https://www.python.org/dev/peps/pep-0440/.
- Final version
Standard tag is in the format \d+\.\d+\.d+
ie. 1.0.0
. It can be divided into major
. minor
. patch
versions.
It is automatically bumped based on commits messages and old version of the same type (look at Git commit message convention
below).
- Pre-release versions
Pre-release versions bumps are calculated based on last final version, its expected bump and old version of the same pre-release type.
-
- Release candidate version
Format \d+\.\d+\.d+rc\d+
ie. 1.0.0rc1
.
-
- Developmental version
Format \d+\.\d+\.d+dev\d+
ie. 1.0.0dev1
.
- Local version
Also, local version can be created from commit sha and old version: \d+\.\d+\.d\+.+
ie. 0.0.0+79ad
.
Git commit message convention
Convention is based on https://www.conventionalcommits.org/en/v1.0.0/ (it's good!). At the moment, only the following rules apply (I usually use only these but more can be added easily):
- Start commit with 'fix:' or 'fix(.*):' to bump patch version.
- Start commit with 'feat:' or 'feat(.*):' to bump minor version.
- Include in the commit line including 'breaking change:' to bump major version.
Notices
Automatically handling many types of version tags in git is more complicated than it initially seems like.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for git-conventional-version-1.0.0rc5.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2800f9f6ec86783f53a7b1689897e7685b3d4413e7e4391b6728ddc8bb5ef0c7 |
|
MD5 | 455295be7fff0966e1cf9d60f302a4b0 |
|
BLAKE2b-256 | bda6bf80f3e3f0eb647dbf4aa9bed2216281649f115fe9d91cc26a49cf761427 |
Hashes for git_conventional_version-1.0.0rc5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 253d2028e61d6142e27aa47ab6b30a26125317eb52da5bdcd5758875803f6db0 |
|
MD5 | 8120713f9bc302949cb0641fc372d6a6 |
|
BLAKE2b-256 | 7193eda38e8344e9d4557d0381682035636f138bb2df5399d2a907a27c848590 |