A simple script to use in your projects to calculcate a SemVer compliant verion identifier based on Git Tags and Commits.
git
bash
perl
Rewinds the commits in the git tree to find one with a tag that is a valid
Semantic Version. If none is found, the version 0.0.0
is used. If the tag
is not found on the current commit then metadata will be added to the version
indicating how many additional commits have been added since the tag along
with a short commit hash. Additionally, if there are any uncommited changes in
tracked files, the diff will be hashed and added to the metadata.
Tags which begin with a 'v' will have it removed when evaluating the tag as a version.
Add it to your project as a submodule:
git submodule add https://gitlab.com/CRThaze/git-semver-compute.git .version
Easily make the current version available in your Makefile like so:
# Use the ?= to allow the version to be overriden easily by passing it in as
# an environment or build variable.
VERSION ?= $(shell ./.version/calculate-version.sh)
$(EXECUTABLE):
go build -ldflags="-X main.Version=$(VERSION)" -o $(EXECUTABLE) .
on: [push]
jobs:
build:
steps:
- name: Compute SemVer from Tags and Commits
id: version
run: echo "VERSION=$(${PWD}/.version/calculate-version.sh)" >> $GITHUB_OUTPUT
- name: Create Archive
run: tar -czf mycode-${{ steps.version.outputs.VERSION }}.tar.gz .