git-version-gen   git-version-gen 
#!/bin/sh #!/bin/sh
# Print a version string. # Print a version string.
scriptversion=2010-10-13.20; # UTC scriptversion=2011-02-19.19; # UTC
# Copyright (C) 2007-2010 Free Software Foundation, Inc. # Copyright (C) 2007-2011 Free Software Foundation, Inc.
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or # the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version. # (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
skipping to change at line 83 skipping to change at line 83
exit 1;; exit 1;;
esac esac
tarball_version_file=$1 tarball_version_file=$1
tag_sed_script="${2:-s/x/x/}" tag_sed_script="${2:-s/x/x/}"
nl=' nl='
' '
# Avoid meddling by environment variable of the same name. # Avoid meddling by environment variable of the same name.
v= v=
v_from_git=
# First see if there is a tarball-only version file. # First see if there is a tarball-only version file.
# then try "git describe", then default. # then try "git describe", then default.
if test -f $tarball_version_file if test -f $tarball_version_file
then then
v=`cat $tarball_version_file` || exit 1 v=`cat $tarball_version_file` || v=
case $v in case $v in
*$nl*) v= ;; # reject multi-line output *$nl*) v= ;; # reject multi-line output
[0-9]*) ;; [0-9]*) ;;
*) v= ;; *) v= ;;
esac esac
test -z "$v" \ test -z "$v" \
&& echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>& 2 && echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2
fi fi
if test -n "$v" if test -n "$v"
then then
: # use $v : # use $v
# Otherwise, if there is at least one git commit involving the working # Otherwise, if there is at least one git commit involving the working
# directory, and "git describe" output looks sensible, use that to # directory, and "git describe" output looks sensible, use that to
# derive a version string. # derive a version string.
elif test "`git log -1 --pretty=format:x . 2>&1`" = x \ elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
&& v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \ && v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
|| git describe --abbrev=4 HEAD 2>/dev/null` \ || git describe --abbrev=4 HEAD 2>/dev/null` \
&& v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \ && v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
&& case $v in && case $v in
v[0-9]*) ;; v[0-9]*) ;;
*) (exit 1) ;; *) (exit 1) ;;
esac esac
then then
# Is this a new git that lists number of commits since the last # Is this a new git that lists number of commits since the last
# tag or the previous older version that did not? # tag or the previous older version that did not?
# Newer: v6.10-77-g0f8faeb # Newer: v6.10-77-g0f8faeb
# Older: v6.10-g0f8faeb # Older: v6.10-g0f8faeb
case $v in case $v in
*-*-*) : git describe is okay three part flavor ;; *-*-*) : git describe is okay three part flavor ;;
*-*) *-*)
: git describe is older two part flavor : git describe is older two part flavor
# Recreate the number of commits and rewrite such that the # Recreate the number of commits and rewrite such that the
# result is the same as if we were using the newer version # result is the same as if we were using the newer version
# of git describe. # of git describe.
vtag=`echo "$v" | sed 's/-.*//'` vtag=`echo "$v" | sed 's/-.*//'`
numcommits=`git rev-list "$vtag"..HEAD | wc -l` commit_list=`git rev-list "$vtag"..HEAD 2>/dev/null` \
v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`; || { commit_list=failed;
;; echo "$0: WARNING: git rev-list failed" 1>&2; }
numcommits=`echo "$commit_list" | wc -l`
v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
test "$commit_list" = failed && v=UNKNOWN
;;
esac esac
# Change the first '-' to a '.', so version-comparing tools work proper ly. # Change the first '-' to a '.', so version-comparing tools work proper ly.
# Remove the "g" in git describe's output string, to save a byte. # Remove the "g" in git describe's output string, to save a byte.
v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`; v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
v_from_git=1
else else
v=UNKNOWN v=UNKNOWN
fi fi
v=`echo "$v" |sed 's/^v//'` v=`echo "$v" |sed 's/^v//'`
# Don't declare a version "dirty" merely because a time stamp has changed. # Test whether to append the "-dirty" suffix only if the version
git update-index --refresh > /dev/null 2>&1 # string we're using came from git. I.e., skip the test if it's "UNKNOWN"
# or if it came from .tarball-version.
dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty= if test -n "$v_from_git"; then
case "$dirty" in # Don't declare a version "dirty" merely because a time stamp has changed
'') ;; .
*) # Append the suffix only if there isn't one already. git update-index --refresh > /dev/null 2>&1
case $v in
*-dirty) ;; dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
*) v="$v-dirty" ;; case "$dirty" in
esac ;; '') ;;
esac *) # Append the suffix only if there isn't one already.
case $v in
*-dirty) ;;
*) v="$v-dirty" ;;
esac ;;
esac
fi
# Omit the trailing newline, so that m4_esyscmd can use the result directly . # Omit the trailing newline, so that m4_esyscmd can use the result directly .
echo "$v" | tr -d "$nl" echo "$v" | tr -d "$nl"
# Local variables: # Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp) # eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion=" # time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC" # time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC" # time-stamp-end: "; # UTC"
 End of changes. 11 change blocks. 
32 lines changed or deleted 44 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/