git-version-gen: handle failed "git rev-list"
authorJim Meyering <meyering@redhat.com>
Mon, 3 Jan 2011 18:35:19 +0000 (19:35 +0100)
committerJim Meyering <meyering@redhat.com>
Mon, 3 Jan 2011 19:39:03 +0000 (20:39 +0100)
* build-aux/git-version-gen: Rather than leaking a "fatal" error
from git and proceeding as if it had succeeded but printed no SHA1
checksums, suppress the diagnostic and handle the failure.
Reported by Bruce Korb in http://marc.info/?l=git&m=129399145930450&w=2

ChangeLog
build-aux/git-version-gen

index 749ad91..88ed953 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2011-01-03  Jim Meyering  <meyering@redhat.com>
 
+       git-version-gen: handle failed "git rev-list"
+       * build-aux/git-version-gen: Rather than leaking a "fatal" error
+       from git and proceeding as if it had succeeded but printed no SHA1
+       checksums, suppress the diagnostic and handle the failure.
+       Reported by Bruce Korb in http://marc.info/?l=git&m=129399145930450&w=2
+
        git-version-gen: include command name in one more diagnostic
        * build-aux/git-version-gen: When the required .tarball-version file
        was missing or unreadable, you might see the diagnostic from "cat",
index c337673..dd893f9 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 # Print a version string.
-scriptversion=2011-01-03.10; # UTC
+scriptversion=2011-01-03.18; # UTC
 
 # Copyright (C) 2007-2011 Free Software Foundation, Inc.
 #
@@ -122,8 +122,12 @@ then
            # result is the same as if we were using the newer version
            # of git describe.
            vtag=`echo "$v" | sed 's/-.*//'`
-           numcommits=`git rev-list "$vtag"..HEAD | wc -l`
+           commit_list=`git rev-list "$vtag"..HEAD 2>/dev/null` \
+               || { 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