|  | #!/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 | tr -d ' '` | 
|  | 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 |