(THRIFT-40) Add -version switch to the compiler to show the Thrift version
The version is determined by configure.ac. After this version is shown the
revision. For subversion, it is simply the current revision as given by
`svnversion`. For git, the latest svn revision that HEAD includes is shown,
followed by the offset of HEAD from that commit, followed by a truncated sha1
for HEAD. If the offset is 0, the offset and sha1 are omitted.
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@672900 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/print_version.sh b/print_version.sh
new file mode 100755
index 0000000..92d1a2d
--- /dev/null
+++ b/print_version.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+cd "`dirname "$0"`"
+
+# Computing both the version and the revision on every invocation is wasteful,
+# but it is cheap and avoids the use of nonportable shell functions.
+
+VERSION=`sed -ne 's/^AC_INIT(\[thrift\], \[\(.*\)\])$/\1/p' configure.ac`
+
+if test -d .svn ; then
+ REVISION="r`svnversion`"
+elif test -d .git ; then
+ SHA1=`git rev-list --max-count=1 --grep='^git-svn-id:' HEAD`
+ REVISION=`git cat-file commit $SHA1 | sed -ne 's/^git-svn-id:[^@]*@\([0-9][0-9]*\).*/r\1/p'`
+ OFFSET=`git rev-list ^$SHA1 HEAD | wc -l`
+ if test $OFFSET != 0 ; then
+ REVISION="$REVISION-$OFFSET-`git rev-parse --verify HEAD | cut -c 1-7`"
+ fi
+else
+ REVISION="exported"
+fi
+
+case "$1" in
+ -v) echo $VERSION ;;
+ -r) echo $REVISION ;;
+ -a) echo "$VERSION-$REVISION" ;;
+ *) echo "Usage: $0 -v|-r|-a"; exit 1;;
+esac