# [PATCH] describe: fall back to 'HEAD' if no appropriate tag exists

4 messages from 2006-09-20 to 2006-09-21. Participants: Johannes Schindelin, Junio C Hamano, Andy Whitcroft.
Thread: https://gitlist.dev/t/5625

## Johannes Schindelin, 2006-09-20 21:25

Subject: [PATCH] describe: fall back to 'HEAD' if no appropriate tag exists
Message-ID: <Pine.LNX.4.63.0609202324210.19042@wbgn013.biozentrum.uni-wuerzburg.de>
URL: https://gitlist.dev/e/Pine.LNX.4.63.0609202324210.19042%40wbgn013.biozentrum.uni-wuerzburg.de

```

Now, if no tag exists to say something like '<tag>-gfffffff', say
'HEAD-gfffffff' instead of erroring out.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
---
 describe.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/describe.c b/describe.c
index ab192f8..8b08a3f 100644
--- a/describe.c
+++ b/describe.c
@@ -136,7 +136,7 @@ static void describe(const char *arg, in
 			return;
 		}
 	}
-	die("cannot describe '%s'", sha1_to_hex(cmit->object.sha1));
+	printf("HEAD-g%s\n", find_unique_abbrev(cmit->object.sha1, abbrev));
 }
 
 int main(int argc, char **argv)
-- 
1.4.2.1.ga0df5-dirty

```

## Junio C Hamano, 2006-09-20 22:46

Subject: Re: [PATCH] describe: fall back to 'HEAD' if no appropriate tag exists
Message-ID: <7v8xkef97b.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7v8xkef97b.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <Pine.LNX.4.63.0609202324210.19042@wbgn013.biozentrum.uni-wuerzburg.de>

```
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> Now, if no tag exists to say something like '<tag>-gfffffff', say
> 'HEAD-gfffffff' instead of erroring out.
>
> Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> ---
>  describe.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/describe.c b/describe.c
> index ab192f8..8b08a3f 100644
> --- a/describe.c
> +++ b/describe.c
> @@ -136,7 +136,7 @@ static void describe(const char *arg, in
>  			return;
>  		}
>  	}
> -	die("cannot describe '%s'", sha1_to_hex(cmit->object.sha1));
> +	printf("HEAD-g%s\n", find_unique_abbrev(cmit->object.sha1, abbrev));
>  }

Hmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm.

At least with tags, the user can assume NAME-gREV means commit
whose abbrev is REV that is descendant of NAME.  HEAD is not
necessarily so.

Having said that, in order to avoid barfing, we have to have
something there, and HEAD is already special in many aspects
anyway (e.g. by only saying HEAD you cannot tell which branch's
tip you are talking about), it might be good enough.

I am just wondering if there is some other obvious substitute
that is better than HEAD.  "GIT-g%s" is not it ("g" already
stands for GIT).

Another possibility is just to do

        puts(sha1_to_hex(cmit->object.sha1))

in this case.  I tend to like that better somehow; it makes
things more explicit.

```

## Johannes Schindelin, 2006-09-20 22:53

Subject: Re: [PATCH] describe: fall back to 'HEAD' if no appropriate tag exists
Message-ID: <Pine.LNX.4.63.0609210051570.19042@wbgn013.biozentrum.uni-wuerzburg.de>
URL: https://gitlist.dev/e/Pine.LNX.4.63.0609210051570.19042%40wbgn013.biozentrum.uni-wuerzburg.de
In-Reply-To: <7v8xkef97b.fsf@assigned-by-dhcp.cox.net>

```
Hi,

On Wed, 20 Sep 2006, Junio C Hamano wrote:

> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
> > Now, if no tag exists to say something like '<tag>-gfffffff', say
> > 'HEAD-gfffffff' instead of erroring out.
> 
> Another possibility is just to do
> 
>         puts(sha1_to_hex(cmit->object.sha1))
> 
> in this case.

Okay. Could we have the abbreviated sha1, at least?

Ciao,
Dscho

```

## Andy Whitcroft, 2006-09-21 07:43

Subject: Re: [PATCH] describe: fall back to 'HEAD' if no appropriate tag exists
Message-ID: <451242B2.7090508@shadowen.org>
URL: https://gitlist.dev/e/451242B2.7090508%40shadowen.org
In-Reply-To: <7v8xkef97b.fsf@assigned-by-dhcp.cox.net>

```
Junio C Hamano wrote:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
>> Now, if no tag exists to say something like '<tag>-gfffffff', say
>> 'HEAD-gfffffff' instead of erroring out.
>>
>> Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
>> ---
>>  describe.c |    2 +-
>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/describe.c b/describe.c
>> index ab192f8..8b08a3f 100644
>> --- a/describe.c
>> +++ b/describe.c
>> @@ -136,7 +136,7 @@ static void describe(const char *arg, in
>>  			return;
>>  		}
>>  	}
>> -	die("cannot describe '%s'", sha1_to_hex(cmit->object.sha1));
>> +	printf("HEAD-g%s\n", find_unique_abbrev(cmit->object.sha1, abbrev));
>>  }
> 
> Hmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm.
> 
> At least with tags, the user can assume NAME-gREV means commit
> whose abbrev is REV that is descendant of NAME.  HEAD is not
> necessarily so.
> 
> Having said that, in order to avoid barfing, we have to have
> something there, and HEAD is already special in many aspects
> anyway (e.g. by only saying HEAD you cannot tell which branch's
> tip you are talking about), it might be good enough.
> 
> I am just wondering if there is some other obvious substitute
> that is better than HEAD.  "GIT-g%s" is not it ("g" already
> stands for GIT).
> 
> Another possibility is just to do
> 
>         puts(sha1_to_hex(cmit->object.sha1))
> 
> in this case.  I tend to like that better somehow; it makes
> things more explicit.

Heh, we've just been putting together 'versioner' for some software and
when git-describe fails we substitute in the complete sha1 at that
point.  Based mostly on the "who'd release something versioned without
tagging anyhow".  I think either the full sha1 or _just_ the gNNNNN
without prefix would be fine.

-apw

```
