aboutsummaryrefslogtreecommitdiff
path: root/gen-version.sh
blob: b493cf5eea3b4812ca0d375f56c4e9eb8d704f24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/sh

# Get version-info specified in Makefile
V=$1

# When building from a git repository, derive the version from the most recent
# release tag instead. The result follows Semantic Versioning 2.0.0, using the
# number of commits made since that tag as build metadata, so seven commits
# after the v1.3.1 tag gives "v1.3.1+7", while a build of the tag itself gives
# plain "v1.3.1". Release tags are expected to be named vMAJOR.MINOR.PATCH.
if test "$(git rev-parse --git-dir 2>/dev/null)" = '.git'
then
	tag=$(git describe --abbrev=0 --match 'v[0-9]*' HEAD 2>/dev/null)
	if test -n "$tag"
	then
		ahead=$(git rev-list --count "$tag..HEAD" 2>/dev/null)
		if test -n "$ahead" && test "$ahead" -gt 0
		then
			V="$tag+$ahead"
		else
			V="$tag"
		fi
	fi
fi

new="CGIT_VERSION = $V"
old=$(cat VERSION 2>/dev/null)

# Exit if VERSION is uptodate
test "$old" = "$new" && exit 0

# Update VERSION with new version-info
echo "$new" > VERSION
cat VERSION