Commit ba2e5f44 authored by Colin Guthrie's avatar Colin Guthrie

build-sys: Add some smarts to version extraction from git tags.

When we are dealing with a tag against a commit with other tags applied,
then favour the first tag, not the last one. This allows us to tag a release
as e.g. v1.0, v1.1-dev and v2.0-dev and get a version of 1.0 rather than the
newer tags.

This also removes support for git versions that do not accept
the --match argument as we also now make use of the --contains arg
which was added at the same time (I think)

Additionally, the v variable is reset just incase it is already exported
in the shell for some reason.
parent 2a01bab3
# Print a version string.
# Copyright (C) 2007-2008 Free Software Foundation
......@@ -76,6 +76,7 @@ esac
# First see if there is a tarball-only version file.
# then try "git describe", then default.
......@@ -95,13 +96,20 @@ if test -n "$v"
: # use $v
elif test -d .git \
&& v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
|| git describe --abbrev=4 HEAD 2>/dev/null` \
&& case $v in
v[0-9]*) ;;
*) (exit 1) ;;
&& v=`git describe --abbrev=4 --match='v[0-9]*' HEAD 2>/dev/null` \
&& [ -n "$v" ]
# If we are on a "dev" tag, we need to check that it is not the same
# reference as the a previous version tag (this only happens when we are
# working with a release tag).
# NB The below trick relies on the $v being an exact tag to work which
# will only work when HEAD == tag. When further commits have been made on top
# of the tag, the $v will be supplimented with the number of commits since
# that tag and the commit ref of the most recent commit and thus will
# fail the test below (as intended)
v2=`git describe --abbrev=4 --match='v[0-9]\.[0-9]' --contains $v 2>/dev/null | cut -d'^' -f1`
[ -n "$v2" ] && v=$v2
# Is this a new git that lists number of commits since the last
# tag or the previous older version that did not?
# Newer: v6.10-77-g0f8faeb
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment