# [PATCH] gitk: make "git describe" output clickable, too

3 messages from 2011-12-10 to 2012-02-01. Participants: Jim Meyering, Junio C Hamano.
Thread: https://gitlist.dev/t/29132

## Jim Meyering, 2011-12-10 15:08

Subject: [PATCH] gitk: make "git describe" output clickable, too
Message-ID: <87mxb0foqe.fsf@rho.meyering.net>
URL: https://gitlist.dev/e/87mxb0foqe.fsf%40rho.meyering.net

```

I noticed that automake's contribution guidelines suggest using
"git describe" output in commit logs to reference previous commits.
By contrast, in coreutils, I had acquired the habit of using a bare SHA1
prefix (8 hex digits), since gitk creates clickable links for that, and
not for "git describe" output.

I prefer the readability of the full "git describe" output, yet want to
retain the gitk links, so wrote the following that renders as clickable
not just SHA1-like strings, but also an SHA1-like string that is
prefixed by "-g".

Signed-off-by: Jim Meyering <meyering@redhat.com>
---
This is relative to master.
Think of this as mere proof-of-concept:

Ideally, the string preceding the -g would be used to disambiguate
the SHA1 prefix, but that would require more code.

I confess that I haven't looked to see if documentation needs
to be updated or if this would merit test suite additions.

 gitk-git/gitk |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/gitk-git/gitk b/gitk-git/gitk
index 4cde0c4..f8eb613 100755
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -6688,7 +6688,7 @@ proc appendwithlinks {text tags} {

     set start [$ctext index "end - 1c"]
     $ctext insert end $text $tags
-    set links [regexp -indices -all -inline {\m[0-9a-f]{6,40}\M} $text]
+    set links [regexp -indices -all -inline {(?:\m|-g)[0-9a-f]{6,40}\M} $text]
     foreach l $links {
 	set s [lindex $l 0]
 	set e [lindex $l 1]
@@ -6704,6 +6704,10 @@ proc appendwithlinks {text tags} {
 proc setlink {id lk} {
     global curview ctext pendinglinks

+    if {[string range $id 0 1] eq "-g"} {
+      set id [string range $id 2 end]
+    }
+
     set known 0
     if {[string length $id] < 40} {
 	set matches [longid $id]
--
1.7.8.163.g9859a

```

## Junio C Hamano, 2011-12-12 19:48

Subject: Re: [PATCH] gitk: make "git describe" output clickable, too
Message-ID: <7v62hl4llk.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7v62hl4llk.fsf%40alter.siamese.dyndns.org
In-Reply-To: <87mxb0foqe.fsf@rho.meyering.net>

```
Jim Meyering <jim@meyering.net> writes:

> I noticed that automake's contribution guidelines suggest using
> "git describe" output in commit logs to reference previous commits.
> By contrast, in coreutils, I had acquired the habit of using a bare SHA1
> prefix (8 hex digits), since gitk creates clickable links for that, and
> not for "git describe" output.
>
> I prefer the readability of the full "git describe" output, yet want to
> retain the gitk links, so wrote the following that renders as clickable
> not just SHA1-like strings, but also an SHA1-like string that is
> prefixed by "-g".
>
> Signed-off-by: Jim Meyering <meyering@redhat.com>
> ---
> This is relative to master.
> Think of this as mere proof-of-concept:

Paul, I think this makes tons of sense. Comments?

> Ideally, the string preceding the -g would be used to disambiguate
> the SHA1 prefix, but that would require more code.
>
> I confess that I haven't looked to see if documentation needs
> to be updated or if this would merit test suite additions.
>
>  gitk-git/gitk |    6 +++++-
>  1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/gitk-git/gitk b/gitk-git/gitk
> index 4cde0c4..f8eb613 100755
> --- a/gitk-git/gitk
> +++ b/gitk-git/gitk
> @@ -6688,7 +6688,7 @@ proc appendwithlinks {text tags} {
>
>      set start [$ctext index "end - 1c"]
>      $ctext insert end $text $tags
> -    set links [regexp -indices -all -inline {\m[0-9a-f]{6,40}\M} $text]
> +    set links [regexp -indices -all -inline {(?:\m|-g)[0-9a-f]{6,40}\M} $text]
>      foreach l $links {
>  	set s [lindex $l 0]
>  	set e [lindex $l 1]
> @@ -6704,6 +6704,10 @@ proc appendwithlinks {text tags} {
>  proc setlink {id lk} {
>      global curview ctext pendinglinks
>
> +    if {[string range $id 0 1] eq "-g"} {
> +      set id [string range $id 2 end]
> +    }
> +
>      set known 0
>      if {[string length $id] < 40} {
>  	set matches [longid $id]
> --
> 1.7.8.163.g9859a

```

## Jim Meyering, 2012-02-01 13:17

Subject: Re: [PATCH] gitk: make "git describe" output clickable, too
Message-ID: <871uqeelra.fsf@rho.meyering.net>
URL: https://gitlist.dev/e/871uqeelra.fsf%40rho.meyering.net
In-Reply-To: <7v62hl4llk.fsf@alter.siamese.dyndns.org>

```
Junio C Hamano wrote:
> Jim Meyering <jim@meyering.net> writes:
>
>> I noticed that automake's contribution guidelines suggest using
>> "git describe" output in commit logs to reference previous commits.
>> By contrast, in coreutils, I had acquired the habit of using a bare SHA1
>> prefix (8 hex digits), since gitk creates clickable links for that, and
>> not for "git describe" output.
>>
>> I prefer the readability of the full "git describe" output, yet want to
>> retain the gitk links, so wrote the following that renders as clickable
>> not just SHA1-like strings, but also an SHA1-like string that is
>> prefixed by "-g".
>>
>> Signed-off-by: Jim Meyering <meyering@redhat.com>
>> ---
>> This is relative to master.
>> Think of this as mere proof-of-concept:
>
> Paul, I think this makes tons of sense. Comments?

Thanks for the feedback, Junio.

>> Ideally, the string preceding the -g would be used to disambiguate
>> the SHA1 prefix, but that would require more code.
>>
>> I confess that I haven't looked to see if documentation needs
>> to be updated or if this would merit test suite additions.
>>
>>  gitk-git/gitk |    6 +++++-
>>  1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/gitk-git/gitk b/gitk-git/gitk
>> index 4cde0c4..f8eb613 100755
>> --- a/gitk-git/gitk
>> +++ b/gitk-git/gitk
>> @@ -6688,7 +6688,7 @@ proc appendwithlinks {text tags} {
>>
>>      set start [$ctext index "end - 1c"]
>>      $ctext insert end $text $tags
>> -    set links [regexp -indices -all -inline {\m[0-9a-f]{6,40}\M} $text]
>> +    set links [regexp -indices -all -inline {(?:\m|-g)[0-9a-f]{6,40}\M} $text]
>>      foreach l $links {
>>  	set s [lindex $l 0]
>>  	set e [lindex $l 1]
>> @@ -6704,6 +6704,10 @@ proc appendwithlinks {text tags} {
>>  proc setlink {id lk} {
>>      global curview ctext pendinglinks
>>
>> +    if {[string range $id 0 1] eq "-g"} {
>> +      set id [string range $id 2 end]
>> +    }
>> +
>>      set known 0
>>      if {[string length $id] < 40} {
>>  	set matches [longid $id]
>> --
>> 1.7.8.163.g9859a

```
