threads / discuss / 42021

Why doesn't gitk highlight commit references from git-describe?

Subject: Why doesn't gitk highlight commit references from git-describe?

## tl;dr

8 messages between Apr 13, 2016 and Apr 13, 2016.

replies: 7people: 3as markdown or json

Stephen Kelly· Apr 13, 2016, 20:36 UTC · lore
Hi,

If I look at git commit 89ea90351dd32fbe384d0cf844640a9c55606f3b in gitk, it does not linkify the v1.6.0-rc0~120^2 in the commit message.

Is there any reason for that, or can gitk be changed?
Thanks,
Steve.
Stefan Beller· Apr 13, 2016, 21:27 UTC · re: Stephen Kelly · lore

Re: Why doesn't gitk highlight commit references from git-describe?

On Wed, Apr 13, 2016 at 1:36 PM, Stephen Kelly <steveire@gmail.com> wrote:
Show 6 quoted lines
> Hi,
>
> If I look at git commit 89ea90351dd32fbe384d0cf844640a9c55606f3b in gitk, it
> does not linkify the v1.6.0-rc0~120^2 in the commit message.
>
> Is there any reason for that, or can gitk be changed?
Sure it can be changed. Go for it.

I think it is hard though. So for example it is easy to spot sha1s and link them (see a6ee883b8e as an example picking up ebef7e5 as a link.)

How would you know(/code) that v1.6.0-rc0~120^2 is a text worth linking? "v1.6.0-rc0" is a custom string as that is how we name tags in this project. It can follow any convention in other projects.

Maybe a first approximation is if there is a `~` followed by numbers or a ^ character, inspect the whole thing if it is a reference into the history?

(Special case for git.git: Sometimes in a discussion you want to explain stuff and may use HEAD^ or such to demonstrate the use case. Other projects would not use that as much in descriptive text I would assume. So we'd need to make sure changing refs (i.e. branches, symbolic refs such as HEAD, FETCH_HEAD) are not considered worth linkifying.)

Thanks, Stefan

Show 10 quoted lines
>
> Thanks,
>
> Steve.
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Junio C Hamano· Apr 13, 2016, 21:32 UTC · re: Stefan Beller · lore

Re: Why doesn't gitk highlight commit references from git-describe?

Stefan Beller <sbeller@google.com> writes:
Show 6 quoted lines
> How would you know(/code) that v1.6.0-rc0~120^2 is a text worth linking?
> "v1.6.0-rc0" is a custom string as that is how we name tags in this project.
> It can follow any convention in other projects.
>
> Maybe a first approximation is if there is a `~` followed by numbers
> or a ^ character, inspect the whole thing if it is a reference into the history?

You (as a gitk process running in a repository) know what tags are in your repository, so you can find the above pattern and see if the prefix matches any of the known tag. That way, you do not have to worry about having to special case HEAD etc.

Stefan Beller· Apr 13, 2016, 21:45 UTC · re: Junio C Hamano · lore

Re: Why doesn't gitk highlight commit references from git-describe?

On Wed, Apr 13, 2016 at 2:32 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 13 quoted lines
> Stefan Beller <sbeller@google.com> writes:
>
>> How would you know(/code) that v1.6.0-rc0~120^2 is a text worth linking?
>> "v1.6.0-rc0" is a custom string as that is how we name tags in this project.
>> It can follow any convention in other projects.
>>
>> Maybe a first approximation is if there is a `~` followed by numbers
>> or a ^ character, inspect the whole thing if it is a reference into the history?
>
> You (as a gitk process running in a repository) know what tags are
> in your repository, so you can find the above pattern and see if the
> prefix matches any of the known tag.  That way, you do not have to
> worry about having to special case HEAD etc.
Sorry for shooting from the hip here[1], that thought was
But it should not be just tags?

We also want to have 4b9ab0ee0130~1^2 to work `right`, in the sense that not just the hexadecimals are highlighted and linking to 4b9ab0ee0130, but the whole expression should link to 49e863b02ae177.

[1] My thinking was just like in https://xkcd.com/761/
Stephen Kelly:
> Would it be possible to implement linking for <tagname> optionally followed
> by something like that? Just tags should be links too, right?
right, just tags should work I'd expect.
> What does 'HEAD^' mean? If it is 'the commit before this one', then why not
> link it?

As said I was thinking about the git development, so see 5f3c3a4e6f11deda for an example:

    files_log_ref_write: new function
    Because HEAD and stash are per-worktree, every refs backend needs to
    go through the files backend to write these refs.
    So create a new function, files_log_ref_write, and add it to
    refs/refs-internal.h. Later, we will use this to handle reflog updates
    for per-worktree symbolic refs (HEAD).

I do not think we would want to link HEAD to anything in that example. (I'd have no idea what it would link to here, so just not link it?)

Thanks, Stefan

Junio C Hamano· Apr 13, 2016, 21:50 UTC · re: Stefan Beller · lore

Re: Why doesn't gitk highlight commit references from git-describe?

Stefan Beller <sbeller@google.com> writes:
> But it should not be just tags?
>
> We also want to have 4b9ab0ee0130~1^2 to work `right`,

I'd consider that just "crazy", though. I'd be just happy to see 4b9ab0ee0130 highlighted and lead to the named commit, i.e. as long as ~1^2 is not part of the link, it is sufficient.

Stephen Kelly· Apr 13, 2016, 21:55 UTC · re: Stefan Beller · lore

Re: Why doesn't gitk highlight commit references from git-describe?

Stefan Beller wrote:
> We also want to have 4b9ab0ee0130~1^2 to work `right`, in the sense
> that not just the hexadecimals are highlighted and linking to
> 4b9ab0ee0130, but the whole expression should link to 49e863b02ae177.

Presumably the same logic which finds 4b9ab0ee0130 to link it can also see if it is suffixed with '~1^2' ?

Is a ref like 4b9ab0ee0130~1^2 commonly useful? In cmake we use the output of cmake describe --contains (when there is a following tag) to refer to commits, in a pattern which I've also seen in git.git occasionally:

 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=23f3798c

I think the only reason for using the output of cmake describe --contains is that it shows the reader the 'era' of the commit (and release it appears in) without having to look it up. I'm not really aware of another good reason to use it, but I think that's enough to make sense.

However I'm not sure I understand why anyone would refer to 4b9ab0ee0130~1^2 instead of 49e863b0 (or perhaps v2.6.5~12, depending on whether the tag is there).

>> What does 'HEAD^' mean? If it is 'the commit before this one', then why
>> not link it?
> 
> As said I was thinking about the git development
> I do not think we would want to link HEAD to anything in that example.
> (I'd have no idea what it would link to here, so just not link it?)
Right, so if a commit message contains something like 
 Make git rebase -i HEAD^^^^ ten times better
then HEAD^^^^ shouldn't become a link. Makes sense to me.
Thanks,
Steve.
Stephen Kelly· Apr 13, 2016, 21:41 UTC · re: Stefan Beller · lore

Re: Why doesn't gitk highlight commit references from git-describe?

Stefan Beller wrote:
Show 7 quoted lines
> How would you know(/code) that v1.6.0-rc0~120^2 is a text worth linking?
> "v1.6.0-rc0" is a custom string as that is how we name tags in this
> project. It can follow any convention in other projects.
> 
> Maybe a first approximation is if there is a `~` followed by numbers
> or a ^ character, inspect the whole thing if it is a reference into the
> history?

Would it be possible to implement linking for <tagname> optionally followed by something like that? Just tags should be links too, right?

Show 6 quoted lines
> (Special case for git.git: Sometimes in a discussion you want to explain
> stuff and may use HEAD^ or such to demonstrate the use case. Other
> projects would not use that as much in descriptive text I would assume. So
> we'd need to make sure
> changing refs (i.e. branches, symbolic refs such as HEAD, FETCH_HEAD) are
> not considered worth linkifying.)

What does 'HEAD^' mean? If it is 'the commit before this one', then why not link it?

Thanks,
Steve.

← back to recent threads