# new GIT-VERSION-GEN with old GIT

2 messages from 2008-02-23 to 2008-02-23. Participants: Martin Koegler, Junio C Hamano.
Thread: https://gitlist.dev/t/12270

## Martin Koegler, 2008-02-23 17:34

Subject: new GIT-VERSION-GEN with old GIT
Message-ID: <20080223173401.GA7808@auto.tuwien.ac.at>
URL: https://gitlist.dev/e/20080223173401.GA7808%40auto.tuwien.ac.at

```
On Debian, git 1.4.4 is still shipped in the stable distribution.

Since e5fc9a0aea2c3c49829b5cdf499339e5c759706b, simply running make in
a git checkout yields to an error message.

The error is in GIT-VERSION-GEN:
| + git diff-index --quiet HEAD
| usage: git-diff-index [-m] [--cached] [<common diff options>] <tree-ish> [<path>...]
| common diff options:
|   -z            output diff-raw with lines terminated with NUL.
|   -p            output patch format.
|   -u            synonym for -p.
|   --patch-with-raw
|                 output both a patch and the diff-raw format.
|   --stat        show diffstat instead of patch.
|   --numstat     show numeric diffstat instead of patch.
|   --patch-with-stat
|                 output a patch and prepend its diffstat.
|   --name-only   show only names of changed files.
|   --name-status show names and status of changed files.
|   --full-index  show full object name on index lines.
|   --abbrev=<n>  abbreviate object names in diff-tree header and diff-raw.
|   -R            swap input file pairs.
|   -B            detect complete rewrites.
|   -M            detect renames.
|   -C            detect copies.
|   --find-copies-harder
|                 try unchanged files as candidate for copy detection.
|   -l<n>         limit rename attempts up to <n> paths.
|   -O<file>      reorder diffs according to the <file>.
|   -S<string>    find filepair whose only one side contains the string.
|   --pickaxe-all
|                 show all files diff when -S is used and hit is found.
|   -a  --text    treat all files as text.

The problem is not critical, as the build process continues with wrong
version information.

mfg Martin Kögler

```

## Junio C Hamano, 2008-02-23 18:46

Subject: Re: new GIT-VERSION-GEN with old GIT
Message-ID: <7vtzjz33zs.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vtzjz33zs.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <20080223173401.GA7808@auto.tuwien.ac.at>

```
mkoegler@auto.tuwien.ac.at (Martin Koegler) writes:

> On Debian, git 1.4.4 is still shipped in the stable distribution.
>
> Since e5fc9a0aea2c3c49829b5cdf499339e5c759706b, simply running make in
> a git checkout yields to an error message.
>
> The error is in GIT-VERSION-GEN:
> | + git diff-index --quiet HEAD
> ...

Sorry about that.  I already have forgotten that --quiet was a
relatively recent invention.

Before e5fc9a, we used --name-only, which was around forever.
The original diff-cache had it since mid July 2005, and the
command kept the option when it was renamed to diff-index in
early September 2005.  That is what we should use.


 GIT-VERSION-GEN |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 03fb9d7..d4714ee 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -16,7 +16,8 @@ elif test -d .git &&
 	case "$VN" in
 	*$LF*) (exit 1) ;;
 	v[0-9]*)
-		git diff-index --quiet HEAD || VN="$VN-dirty" ;;
+		test -z "$(git diff-index --name-only HEAD)" ||
+		VN="$VN-dirty" ;;
 	esac
 then
 	VN=$(echo "$VN" | sed -e 's/-/./g');

```
