chiark / gitweb /
.git-revid from my trains.git
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 18 Mar 2012 11:15:28 +0000 (11:15 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 18 Mar 2012 11:15:28 +0000 (11:15 +0000)
.git-revid [new file with mode: 0755]

diff --git a/.git-revid b/.git-revid
new file mode 100755 (executable)
index 0000000..74037ae
--- /dev/null
@@ -0,0 +1,39 @@
+#!/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