summaryrefslogtreecommitdiff
path: root/git-version-gen
diff options
context:
space:
mode:
authorColin Guthrie <cguthrie@mandriva.org>2010-12-04 17:21:27 +0000
committerColin Guthrie <cguthrie@mandriva.org>2010-12-04 17:34:03 +0000
commitba2e5f4442b8f933f37411cc625598cc72938d33 (patch)
tree37260a058ae4ef5fcab58daf7e4c0cc114c9c63f /git-version-gen
parent2a01bab3cc50a6ef02af3872a13d279ad996a0b1 (diff)
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.
Diffstat (limited to 'git-version-gen')
-rwxr-xr-xgit-version-gen22
1 files changed, 15 insertions, 7 deletions
diff --git a/git-version-gen b/git-version-gen
index ae3988ea1..1a3d13b9c 100755
--- a/git-version-gen
+++ b/git-version-gen
@@ -1,6 +1,6 @@
#!/bin/sh
# Print a version string.
-scriptversion=2008-04-08.07
+scriptversion=2008-04-08.07.01
# Copyright (C) 2007-2008 Free Software Foundation
#
@@ -76,6 +76,7 @@ esac
tarball_version_file=$1
nl='
'
+v=
# First see if there is a tarball-only version file.
# then try "git describe", then default.
@@ -95,13 +96,20 @@ if test -n "$v"
then
: # 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) ;;
- esac
+ && v=`git describe --abbrev=4 --match='v[0-9]*' HEAD 2>/dev/null` \
+ && [ -n "$v" ]
then
+ # 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