--- /dev/null
+#!/bin/bash
+set -e
+set -o pipefail
+
+kind="$1"
+
+desc=`git-describe --always HEAD`
+log=`git-log -1 --pretty='format:%h %ci %s' HEAD`
+set +e
+git-diff --quiet HEAD
+diffrc=$?
+set -e
+case $diffrc in
+0) ;;
+1) diffplus=+ ;;
+*) exit $diffrc ;;
+esac
+
+case "$1" in
+'') maxlen=.71
+ ;;
+C) echo '#include "../.git-revid-autoversion.h"'
+ printf 'const char autoversion[]= \"'
+ log="${log//\\/\\\\}"
+ log="${log//\"/\\\"}"
+ maxlen=''
+ ;;
+*) echo >&2 'bad usage for .git-revid'
+ exit 1
+ ;;
+esac
+
+printf "%${maxlen}s" "$desc$diffplus $log"
+
+case "$kind" in
+'') printf '\n' ;;
+C) echo '";' ;;
+*) ;;
+esac