From: Junio C Hamano Date: Tue, 08 Aug 2006 20:11:16 GMT Subject: Re: Trouble building newer git with older Message-ID: <7v7j1jvvh7.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <20060808184716.GC4546@us.ibm.com> Nishanth Aravamudan writes: > This is because GIT-VERSION-GEN attempts to invoke `git describe` but > describe is not a valid parameter to the current version of git. This is > not treated as a failure case, though, as output is stored in VN. > Perhaps the return code of `git describe` should also be checked? Or am > I just not supposed to upgrade from this old of a version of git via > git? No, it was broken when this patch was applied. commit 1100ac81a90b03e0c037a286569a340decf7489b Author: Sean Date: Mon May 22 00:39:52 2006 -0400 Luckily, my copy of GNU interactive tools, when invoked like this: git describe --abbrev=4 HEAD 2>/dev/null exits with an error code 1, so the existing code already catches it. How about this patch? -- >8 -- GIT-VERSION-GEN: adjust for ancient git When an ancient "git" that does not understand "describe" command is on the $PATH, "git describe" emitted a Usage message without exiting non-zero status (which is a mistake we cannot fix retroactively). Catch this case to make sure we do not try using phoney multi-line string as a version number. Signed-off-by: Junio C Hamano --- diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index 1ce217d..14923c9 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -3,9 +3,17 @@ #!/bin/sh GVF=GIT-VERSION-FILE DEF_VER=v1.4.2.GIT +LF=' +' + # First try git-describe, then see if there is a version file # (included in release tarballs), then default -if VN=$(git describe --abbrev=4 HEAD 2>/dev/null); then +if VN=$(git describe --abbrev=4 HEAD 2>/dev/null) && + case "$VN" in + *$LF*) (exit 1) ;; + v[0-9]*) : happy ;; + esac +then VN=$(echo "$VN" | sed -e 's/-/./g'); elif test -f version then