From: Bruce Korb <bruce.korb@gmail.com>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: GNU Autoconf mailing list <autoconf@gnu.org>,
Eric Blake <eblake@redhat.com>,
GIT Development <git@vger.kernel.org>
Subject: Re: fatal: ambiguous message
Date: Sun, 02 Jan 2011 16:16:21 -0800 [thread overview]
Message-ID: <4D211555.1040502@gmail.com> (raw)
In-Reply-To: <20110102183453.GA13463@burratino>
[-- Attachment #1: Type: text/plain, Size: 529 bytes --]
Hi Jonathan,
On Sun, Jan 2, 2011 at 10:34 AM, Jonathan Nieder <jrnieder@gmail.com> wrote:
> Were you been able to reproduce that outside the script?
No, I was blind to the invocation. You found it. I was looking
without seeing. Thank you.
Given that shells without functions can be considered sufficiently
obsolete to not be a consideration, perhaps a better solution is
to put the I-don't-care-about-error-messages code into a separate
function with stderr redirected. Doing that turned out messier
than I had hoped....
[-- Attachment #2: gvg.patch --]
[-- Type: text/x-patch, Size: 4381 bytes --]
diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen
index c278f6a..8a238b0 100755
--- a/build-aux/git-version-gen
+++ b/build-aux/git-version-gen
@@ -1,6 +1,6 @@
#!/bin/sh
# Print a version string.
-scriptversion=2010-10-13.20; # UTC
+scriptversion=2011-01-03.00; # UTC
# Copyright (C) 2007-2011 Free Software Foundation, Inc.
#
@@ -78,76 +78,96 @@ tag_sed_script="${2:-s/x/x/}"
nl='
'
-# Avoid meddling by environment variable of the same name.
-v=
+get_ver()
+{
+ local PS4='>gv> '
+ git status >/dev/null 2>&1 || {
+ printf UNKNOWN
+ exit 0
+ }
-# First see if there is a tarball-only version file.
-# then try "git describe", then default.
-if test -f $tarball_version_file
-then
- v=`cat $tarball_version_file` || exit 1
- case $v in
- *$nl*) v= ;; # reject multi-line output
- [0-9]*) ;;
- *) v= ;;
+ test "`git log -1 --pretty=format:x . 2>&1`" = x || {
+ printf UNKNOWN
+ exit 0
+ }
+
+ X=`git describe --abbrev=4 --match='v*' HEAD || \
+ git describe --abbrev=4 HEAD` || {
+ printf UNKNOWN
+ exit 0
+ }
+
+ case "$X" in
+ v[0-9]* ) : ;;
+ * )
+ printf UNKNOWN
+ exit 0
+ ;;
esac
- test -z "$v" \
- && echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2
-fi
-if test -n "$v"
-then
- : # use $v
-# 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) ;;
- esac
-then
# Is this a new git that lists number of commits since the last
# tag or the previous older version that did not?
# Newer: v6.10-77-g0f8faeb
# Older: v6.10-g0f8faeb
- case $v in
+ case $X in
*-*-*) : git describe is okay three part flavor ;;
*-*)
: git describe is older two part flavor
# Recreate the number of commits and rewrite such that the
# result is the same as if we were using the newer version
# of git describe.
- vtag=`echo "$v" | sed 's/-.*//'`
+ vtag=`echo "$X" | sed 's/-.*//'`
numcommits=`git rev-list "$vtag"..HEAD | wc -l`
- v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
+ X=`echo "$X" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
;;
esac
+ # Don't declare a version "dirty" merely because a time stamp has changed.
+ silent_git update-index --refresh >/dev/null 2>&1
+
+ dirty=`git diff-index --name-only HEAD` || dirty=
+ case "$dirty" in
+ '') ;;
+ *) # Append the suffix only if there isn't one already.
+ case $X in
+ *-dirty) ;;
+ *) X="$X-dirty" ;;
+ esac
+ ;;
+ esac
+
# Change the first '-' to a '.', so version-comparing tools work properly.
# Remove the "g" in git describe's output string, to save a byte.
- v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
+ echo "$X" | sed 's/^v//;s/-/./;s/\(.*\)-g/\1-/'
+}
+
+# First see if there is a tarball-only version file.
+# then try "git describe", then default.
+if test -f $tarball_version_file
+then
+ v=`cat $tarball_version_file` || exit 1
+ case $v in
+ *$nl*) v= ;; # reject multi-line output
+ [0-9]*) ;;
+ *) v= ;;
+ esac
+ test -z "$v" \
+ && echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2
else
- v=UNKNOWN
+ v=
fi
-v=`echo "$v" |sed 's/^v//'`
-
-# Don't declare a version "dirty" merely because a time stamp has changed.
-git update-index --refresh > /dev/null 2>&1
+if test -n "$v"
+then
+ : # use $v
-dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
-case "$dirty" in
- '') ;;
- *) # Append the suffix only if there isn't one already.
- case $v in
- *-dirty) ;;
- *) v="$v-dirty" ;;
- esac ;;
-esac
+else
+ # 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.
+ #
+ v=`get_ver` 2>/dev/null
+fi
# Omit the trailing newline, so that m4_esyscmd can use the result directly.
echo "$v" | tr -d "$nl"
[-- Attachment #3: Type: text/plain, Size: 134 bytes --]
_______________________________________________
Autoconf mailing list
Autoconf@gnu.org
http://lists.gnu.org/mailman/listinfo/autoconf
next prev parent reply other threads:[~2011-01-03 0:16 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4D1D33D7.7040809@gmail.com>
[not found] ` <4D1DFF96.4010004@redhat.com>
2011-01-02 18:03 ` fatal: ambiguous message Bruce Korb
2011-01-02 18:34 ` Jonathan Nieder
2011-01-03 0:16 ` Bruce Korb [this message]
2011-01-03 15:04 ` Eric Blake
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D211555.1040502@gmail.com \
--to=bruce.korb@gmail.com \
--cc=autoconf@gnu.org \
--cc=eblake@redhat.com \
--cc=git@vger.kernel.org \
--cc=jrnieder@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).