threads / patch / 5625

patchdescribe: fall back to 'HEAD' if no appropriate tag exists

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

## tl;dr

4 messages between Sep 20, 2006 and Sep 21, 2006. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Johannes Schindelin· Sep 20, 2006, 21:25 UTC · lore

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(-)
Show changes to describe.c +1 −1
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· Sep 20, 2006, 22:46 UTC · re: Johannes Schindelin · lore

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

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 19 quoted lines
> 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· Sep 20, 2006, 22:53 UTC · re: Junio C Hamano · lore

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

Hi,
On Wed, 20 Sep 2006, Junio C Hamano wrote:
Show 10 quoted lines
> 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· Sep 21, 2006, 07:43 UTC · re: Junio C Hamano · lore

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

Junio C Hamano wrote:
Show 43 quoted lines
> 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

← back to recent threads