version.sh: Use git tags in versions
authorJeremy Kerr <jk@ozlabs.org>
Fri, 14 Mar 2014 03:06:10 +0000 (11:06 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Wed, 16 Jul 2014 00:43:09 +0000 (08:43 +0800)
If the current HEAD is tagged, we'd like to use that tag as the version.

We remove a 'v' prefix, so that v1.0 -> 1.0

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
version.sh

index 4d96d11250beb4351c1d9a190f27533c6383116f..18981f617b15b65654a6cb1d1d9de8f77eb72e86 100755 (executable)
@@ -7,18 +7,22 @@ datefmt='%Y%m%d'
 
 if head=$(git rev-parse --short=8 --verify HEAD 2>/dev/null); then
 
-       # If available, use the git commit revision for the package version,
-       # and add a date prefix for easy comparisons.
-
-       date=$(git log --pretty=format:"%ct" -1 HEAD)
-
        suffix=''
-       # Add a '-dirty' postfix for uncommitted changes.
+       # Add a '-dirty' suffix for uncommitted changes.
        if git diff-index HEAD | read dummy; then
                suffix=-dirty
        fi
 
-       version=$(printf "%($datefmt)T-g%s%s" ${date} ${head} ${suffix})
+       if tag=$(git describe --tags --exact-match 2>/dev/null); then
+               # use a tag; remove any 'v' prefix from v<VERSION> tags
+               tag=${tag#v}
+               version=$(printf "%s%s" ${tag} ${suffix})
+       else
+               # Use the git commit revision for the package version, and add
+               # a date prefix for easy comparisons.
+               date=$(git log --pretty=format:"%ct" -1 HEAD)
+               version=$(printf "%($datefmt)T-g%s%s" ${date} ${head} ${suffix})
+       fi
 else
        # Default to current date and time.
        version="$(date +dev-$datefmt)"