From 0668e722b6176369bcaaf01eeb8820b16274c7de Mon Sep 17 00:00:00 2001 From: o9000 Date: Thu, 18 Feb 2016 17:35:12 +0100 Subject: [PATCH] Fix get_version.sh so that it returns the correct version when .git is missing --- ChangeLog | 5 +++++ get_version.sh | 55 +++++++++++++++++++++++++++++--------------------- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 501b417..b444c00 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2016-02-18 master +- Fixes: + - Fix get_version.sh so that it returns the correct version when .git is missing + - Create temporary files in /tmp + 2016-01-29 0.12.7 - Fixes: - Fix crash caused by race when reading inconsistent values for _NET_CURRENT_DESKTOP and _NET_NUMBER_OF_DESKTOPS diff --git a/get_version.sh b/get_version.sh index e63c602..b43cd3b 100755 --- a/get_version.sh +++ b/get_version.sh @@ -3,34 +3,43 @@ MAJOR=0.12 DIRTY="" -git update-index -q --ignore-submodules --refresh -# Disallow unstaged changes in the working tree -if ! git diff-files --quiet --ignore-submodules -- +if git status 1>/dev/null 2>/dev/null then - if [ "$1" = "--strict" ] + git update-index -q --ignore-submodules --refresh + # Disallow unstaged changes in the working tree + if ! git diff-files --quiet --ignore-submodules -- then - echo >&2 "Error: there are unstaged changes." - git diff-files --name-status -r --ignore-submodules -- >&2 - exit 1 - else - DIRTY="-dirty" + if [ "$1" = "--strict" ] + then + echo >&2 "Error: there are unstaged changes." + git diff-files --name-status -r --ignore-submodules -- >&2 + exit 1 + else + DIRTY="-dirty" + fi + fi + + # Disallow uncommitted changes in the index + if ! git diff-index --cached --quiet HEAD --ignore-submodules -- + then + if [ "$1" = "--strict" ] + then + echo >&2 "Error: there are uncommitted changes." + git diff-index --cached --name-status -r --ignore-submodules HEAD -- >&2 + exit 1 + else + DIRTY="-dirty" + fi + fi + VERSION=$(git describe --exact-match 2>/dev/null || echo "$MAJOR-git$(git show -s --pretty=format:%cI.%h | tr -d ':' | tr -d '-' | tr '.' '-' | sed 's/T[0-9\+]*//g')")$DIRTY +else + VERSION=$(head -n 1 ChangeLog | cut -d ' ' -f 2) + if [ $VERSION = "master" ] + then + VERSION=$VERSION-$(head -n 1 ChangeLog | cut -d ' ' -f 1) fi fi -# Disallow uncommitted changes in the index -if ! git diff-index --cached --quiet HEAD --ignore-submodules -- -then - if [ "$1" = "--strict" ] - then - echo >&2 "Error: there are uncommitted changes." - git diff-index --cached --name-status -r --ignore-submodules HEAD -- >&2 - exit 1 - else - DIRTY="-dirty" - fi -fi - -VERSION=$(git describe --exact-match 2>/dev/null || echo "$MAJOR-git$(git show -s --pretty=format:%cI.%h | tr -d ':' | tr -d '-' | tr '.' '-' | sed 's/T[0-9\+]*//g')")$DIRTY VERSION=$(echo "$VERSION" | sed 's/^v//') echo '#define VERSION_STRING "'$VERSION'"' > version.h