From 56944e4d38b3d55384e0465afa255ddd1b31650c Mon Sep 17 00:00:00 2001 From: Yves Rutschle Date: Sat, 23 Nov 2013 16:43:21 +0100 Subject: [PATCH] Generate version tag based on file modification date if git is not present --- genver.sh | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/genver.sh b/genver.sh index 5f1d4dc..e5adc6c 100755 --- a/genver.sh +++ b/genver.sh @@ -7,27 +7,34 @@ else QUIET=0 fi +if ! `(git status | grep -q "On branch") 2> /dev/null`; then + # If we don't have git, we can't work out what + # version this is. It must have been downloaded as a + # zip file. Github creates the zip file with all + # files dated from the last change: use the + # Makefile's modification time as a release number + release=zip-`stat -c "%y" Makefile | sed 's/ .*//'` +fi + if head=`git rev-parse --verify HEAD 2>/dev/null`; then - - if [ $QUIET -ne 1 ]; then - printf "#ifndef _VERSION_H_ \n" - printf "#define _VERSION_H_ \n\n" - printf "#define VERSION \"" - fi - # generate the version info based on the tag - (git describe --tags || git --describe || git describe --all --long) \ - 2>/dev/null | tr -d '\n' + release=`(git describe --tags || git --describe || git describe --all --long) \ + 2>/dev/null | tr -d '\n'` # Are there uncommitted changes? git update-index --refresh --unmerged > /dev/null if git diff-index --name-only HEAD | grep -v "^scripts/package" \ | read dummy; then - printf '%s' -dirty - fi - - if [ $QUIET -ne 1 ]; then - printf "\"\n" - printf "\n#endif\n" + release="$release-dirty" fi fi + + +if [ $QUIET -ne 1 ]; then + printf "#ifndef _VERSION_H_ \n" + printf "#define _VERSION_H_ \n\n" + printf "#define VERSION \"$release\"\n" + printf "#endif\n" +else + printf "$release\n" +fi