diff options
Diffstat (limited to 'utils/gen-version.sh')
-rwxr-xr-x | utils/gen-version.sh | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/utils/gen-version.sh b/utils/gen-version.sh index b3003d7a..708c01d3 100755 --- a/utils/gen-version.sh +++ b/utils/gen-version.sh @@ -8,6 +8,9 @@ then cd "$1" 2>/dev/null || exit 1 fi +# Bail out if the directory isn't under git control +git rev-parse --git-dir >/dev/null 2>&1 || exit 1 + # Get a short description from the tree. version=$(git describe --abbrev=8 --match "v[0-9]*" 2>/dev/null) @@ -16,22 +19,16 @@ then # Handle an un-tagged repository sha=$(git describe --abbrev=8 --always 2>/dev/null) commits=$(git log --oneline | wc -l 2>/dev/null) - version=v0.0.$commits.$sha + version="v0.0.0-$commits-g$sha" fi -# Prevent changed timestamps causing -dirty labels +# Append a '-dirty' suffix if the working tree is dirty. Prevent false +# positives due to changed timestamps by running git update-index. git update-index --refresh > /dev/null 2>&1 -dirty=$(git diff-index --name-only HEAD 2>/dev/null) || dirty= - -# Strip the 'g', and replace the preceeding '-' with a '+' to denote a label -version=$(echo "$version" | sed -e 's/-g/+/g') - -# Fix the '-' (the patch count) to a '.' as a version increment. -version=$(echo "$version" | sed -e 's/-/./g') +git diff-index --quiet HEAD || version="$version-dirty" -if [ -n "$dirty" ] -then - version=$version-dirty -fi +# Replace first '-' with a '+' to denote build metadata, strip the 'g' in from +# of the git SHA1 and remove the initial 'v'. +version=$(echo "$version" | sed -e 's/-/+/' | sed -e 's/-g/-/' | cut -c 2-) echo "$version" |