threads / discuss / 5176

Trouble building newer git with older

Subject: Trouble building newer git with older

## tl;dr

3 messages between Aug 8, 2006 and Aug 8, 2006.

replies: 2people: 2as markdown or json

Nishanth Aravamudan· Aug 8, 2006, 18:47 UTC · lore
Hi all,

I am in the process of updating one of our system's set of git binaries and noticed the following. When executing

git clone rsync://rsync.kernel.org/pub/scm/git/git.git git cd git git checkout make

I get this error:
kernel:/home/nacc/download/git# make
GIT_VERSION = Usage: git COMMAND [OPTIONS] [TARGET]
 git command 'describe' not found: commands are:
    add apply archimport bisect branch checkout cherry clone
    commit count.objects cvsimport diff fetch format.patch
    fsck.cache get.tar.commit.id init.db log ls.remote octopus
    pack.objects parse.remote patch.id prune pull push rebase
    relink rename repack request.pull reset resolve revert
    send.email shortlog show.branch status tag verify.tag
    whatchanged-dirty
GIT-VERSION-FILE:2: *** multiple target patterns.  Stop.

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?

Thanks, Nish

-- 
Nishanth Aravamudan <nacc@us.ibm.com>
IBM Linux Technology Center
Junio C Hamano· Aug 8, 2006, 20:11 UTC · re: Nishanth Aravamudan · lore

Re: Trouble building newer git with older

Nishanth Aravamudan <nacc@us.ibm.com> writes:
Show 6 quoted lines
> 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 <seanlkml@sympatico.ca>
        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 <junkio@cox.net>
---
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
Nishanth Aravamudan· Aug 8, 2006, 22:52 UTC · re: Junio C Hamano · lore

Re: Trouble building newer git with older

On 08.08.2006 [13:11:16 -0700], Junio C Hamano wrote:
Show 33 quoted lines
> Nishanth Aravamudan <nacc@us.ibm.com> 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 <seanlkml@sympatico.ca>
>         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 <junkio@cox.net>
Looks good to me and I can confirm this fixes the problem here.
Acked-by: Nishanth Aravamudan <nacc@us.ibm.com>

Thanks, Nish

← back to recent threads