#!/bin/sh
# Print a version string.
-scriptversion=2010-02-24.17; # UTC
+scriptversion=2010-10-13.20; # UTC
# Copyright (C) 2007-2010 Free Software Foundation, Inc.
#
# echo $(VERSION) > $(distdir)/.tarball-version
case $# in
- 1) ;;
- *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;;
+ 1|2) ;;
+ *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version" \
+ '[TAG-NORMALIZATION-SED-SCRIPT]'
+ exit 1;;
esac
tarball_version_file=$1
+tag_sed_script="${2:-s/x/x/}"
nl='
'
+# Avoid meddling by environment variable of the same name.
+v=
+
# First see if there is a tarball-only version file.
# then try "git describe", then default.
if test -f $tarball_version_file
if test -n "$v"
then
: # use $v
-elif test -d .git \
+# Otherwise, if there is at least one git commit involving the working
+# directory, and "git describe" output looks sensible, use that to
+# derive a version string.
+elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
&& v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
|| git describe --abbrev=4 HEAD 2>/dev/null` \
+ && v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
&& case $v in
v[0-9]*) ;;
*) (exit 1) ;;
v=`echo "$v" |sed 's/^v//'`
# Don't declare a version "dirty" merely because a time stamp has changed.
-git status > /dev/null 2>&1
+git update-index --refresh > /dev/null 2>&1
dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
case "$dirty" in
esac
# Omit the trailing newline, so that m4_esyscmd can use the result directly.
-echo "$v" | tr -d '\012'
+echo "$v" | tr -d "$nl"
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)