# [PATCH] GIT-VERSION-GEN: support non-standard $GIT_DIR path

5 messages from 2013-06-15 to 2013-06-18. Participants: Dennis Kaarsemaker, Junio C Hamano.
Thread: https://gitlist.dev/t/34157

## Dennis Kaarsemaker, 2013-06-15 23:01

Subject: [PATCH] GIT-VERSION-GEN: support non-standard $GIT_DIR path
Message-ID: <20130615230108.GA21005@kaarsemaker.net>
URL: https://gitlist.dev/e/20130615230108.GA21005%40kaarsemaker.net

```
make and make test both work when $GIT_DIR isn't .git, but make dist
included a bogus GIT-VERSION-FILE.

Signed-off-by: Dennis Kaarsemaker <dennis@kaarsemaker.net>
---
 I'm doing daily builds of git, using many workers and a shared git.git,
 with per-worker checkouts, it would be really useful if GIT-VERSION-GEN
 actually supports this and doesn't generate a fairly bogus
 GIT-VERSION-FILE.

 GIT-VERSION-GEN | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 390782f..7dcca28 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -11,7 +11,7 @@ LF='
 if test -f version
 then
 	VN=$(cat version) || VN="$DEF_VER"
-elif test -d .git -o -f .git &&
+elif test -d .git -o -f .git -o test -d $GIT_DIR &&
 	VN=$(git describe --match "v[0-9]*" --abbrev=7 HEAD 2>/dev/null) &&
 	case "$VN" in
 	*$LF*) (exit 1) ;;
-- 
1.8.2.4.g940421e

```

## Junio C Hamano, 2013-06-17 20:06

Subject: Re: [PATCH] GIT-VERSION-GEN: support non-standard $GIT_DIR path
Message-ID: <7v38sgcxjp.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7v38sgcxjp.fsf%40alter.siamese.dyndns.org
In-Reply-To: <20130615230108.GA21005@kaarsemaker.net>

```
Dennis Kaarsemaker <dennis@kaarsemaker.net> writes:

>  I'm doing daily builds of git, using many workers and a shared git.git,
>  with per-worker checkouts

OK, so GIT_DIR is explicitly specified in these "workers".

Makes sense.

```

## Junio C Hamano, 2013-06-17 20:09

Subject: Re: [PATCH] GIT-VERSION-GEN: support non-standard $GIT_DIR path
Message-ID: <7vy5a8biu8.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vy5a8biu8.fsf%40alter.siamese.dyndns.org
In-Reply-To: <7v38sgcxjp.fsf@alter.siamese.dyndns.org>

```
Junio C Hamano <gitster@pobox.com> writes:

> Dennis Kaarsemaker <dennis@kaarsemaker.net> writes:
>
>>  I'm doing daily builds of git, using many workers and a shared git.git,
>>  with per-worker checkouts
>
> OK, so GIT_DIR is explicitly specified in these "workers".
>
> Makes sense.

Actually it does not.  What if GIT_DIR is an empty string or not set
at all?  The patch breaks the build for everybody else, doesn't it?

Perhaps like this instead?

 GIT-VERSION-GEN | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 2908204..91ec831 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -11,7 +11,7 @@ LF='
 if test -f version
 then
 	VN=$(cat version) || VN="$DEF_VER"
-elif test -d .git -o -f .git &&
+elif test -d ${GIT_DIR:-.git} -o -f .git &&
 	VN=$(git describe --match "v[0-9]*" --abbrev=7 HEAD 2>/dev/null) &&
 	case "$VN" in
 	*$LF*) (exit 1) ;;

```

## Dennis Kaarsemaker, 2013-06-18 07:20

Subject: Re: [PATCH] GIT-VERSION-GEN: support non-standard $GIT_DIR path
Message-ID: <1371540006.32543.5.camel@localhost>
URL: https://gitlist.dev/e/1371540006.32543.5.camel%40localhost
In-Reply-To: <7vy5a8biu8.fsf@alter.siamese.dyndns.org>

```
On ma, 2013-06-17 at 13:09 -0700, Junio C Hamano wrote:
> Junio C Hamano <gitster@pobox.com> writes:
> 
> > Dennis Kaarsemaker <dennis@kaarsemaker.net> writes:
> >
> >>  I'm doing daily builds of git, using many workers and a shared git.git,
> >>  with per-worker checkouts
> >
> > OK, so GIT_DIR is explicitly specified in these "workers".

Yes, both GIT_DIR and GIT_WORK_TREE are set and the use of .git/HEAD and
anything relying on it is shunned, so workers can run checkout as they
please.

> > Makes sense.
>
> Actually it does not.  What if GIT_DIR is an empty string or not set
> at all?  The patch breaks the build for everybody else, doesn't it?

It does indeed, I only tested in my setup and not with a normal make
test. Apologies.

> Perhaps like this instead?
>
>  GIT-VERSION-GEN | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
> index 2908204..91ec831 100755
> --- a/GIT-VERSION-GEN
> +++ b/GIT-VERSION-GEN
> @@ -11,7 +11,7 @@ LF='
>  if test -f version
>  then
>  	VN=$(cat version) || VN="$DEF_VER"
> -elif test -d .git -o -f .git &&
> +elif test -d ${GIT_DIR:-.git} -o -f .git &&
>  	VN=$(git describe --match "v[0-9]*" --abbrev=7 HEAD 2>/dev/null) &&
>  	case "$VN" in
>  	*$LF*) (exit 1) ;;

Yes, that makes a lot more sense and actually works in normal make test
and with a detached .git. Do you want me to send an updated patch?

-- 
Dennis Kaarsemaker
www.kaarsemaker.net

```

## Junio C Hamano, 2013-06-18 14:36

Subject: Re: [PATCH] GIT-VERSION-GEN: support non-standard $GIT_DIR path
Message-ID: <7vwqpr8ozf.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vwqpr8ozf.fsf%40alter.siamese.dyndns.org
In-Reply-To: <1371540006.32543.5.camel@localhost>

```
Dennis Kaarsemaker <dennis@kaarsemaker.net> writes:

> On ma, 2013-06-17 at 13:09 -0700, Junio C Hamano wrote:
>> Junio C Hamano <gitster@pobox.com> writes:
>> 
>> > Dennis Kaarsemaker <dennis@kaarsemaker.net> writes:
>> >
>> >>  I'm doing daily builds of git, using many workers and a shared git.git,
>> >>  with per-worker checkouts
>> >
>> > OK, so GIT_DIR is explicitly specified in these "workers".
>
> Yes, both GIT_DIR and GIT_WORK_TREE are set and the use of .git/HEAD and
> anything relying on it is shunned, so workers can run checkout as they
> please.
>
>> > Makes sense.
>>
>> Actually it does not.  What if GIT_DIR is an empty string or not set
>> at all?  The patch breaks the build for everybody else, doesn't it?
>
> It does indeed, I only tested in my setup and not with a normal make
> test. Apologies.
>
>> Perhaps like this instead?
>>
>>  GIT-VERSION-GEN | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
>> index 2908204..91ec831 100755
>> --- a/GIT-VERSION-GEN
>> +++ b/GIT-VERSION-GEN
>> @@ -11,7 +11,7 @@ LF='
>>  if test -f version
>>  then
>>  	VN=$(cat version) || VN="$DEF_VER"
>> -elif test -d .git -o -f .git &&
>> +elif test -d ${GIT_DIR:-.git} -o -f .git &&
>>  	VN=$(git describe --match "v[0-9]*" --abbrev=7 HEAD 2>/dev/null) &&
>>  	case "$VN" in
>>  	*$LF*) (exit 1) ;;
>
> Yes, that makes a lot more sense and actually works in normal make test
> and with a detached .git. Do you want me to send an updated patch?

I think I've locally amended it already before queueing it to 'pu',
so no need to resend.

Thanks.

```
