From: Jakub Narebski <jnareb@gmail.com>
To: "Giuseppe Bilotta" <giuseppe.bilotta@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] gitweb: ref markers link to named shortlogs
Date: Fri, 22 Aug 2008 12:56:21 +0200 [thread overview]
Message-ID: <200808221256.21805.jnareb@gmail.com> (raw)
In-Reply-To: <cb7bb73a0808220231w37d2341eic56cabb595399f68@mail.gmail.com>
On Fri, 22 August 2008, Giuseppe Bilotta wrote:
> On Fri, Aug 22, 2008 at 10:49 AM, Jakub Narebski <jnareb@gmail.com> wrote:
> >
> > What format_ref_marker() uses is not exactly 'type' of reference, but
> > more 'kind of' reference. It is based on reference namespace, not
> > on type of object the reference is at (points to). So code based
> > on this info (like your v3 patch) would fail on lightweight tag, i.e.
> > if there is ref in 'refs/tags' namespace which points directly to commit,
> > and not to tag object.
> >
> > But 'git show-ref --dereference' _has_ information about whether
> > given reference points directly or indirectly to given object
> > ($refs->{$id}), but currently we neither save it, nor use it.
> > For example we can have:
> >
> > 781c1834f5419bdf81bb7f3750170ccd6b809174 refs/heads/maint
> > ...
> > 124c62e8781a8f03ee0256bee78f7b392e3920af refs/stash
> > ...
> > 89e6fcde639d65823e8113c307067441701ac74f refs/tags/Attic/gitweb/parse_rev_list
> > b69a41a384d19fe253b9f4f34c9019ad96ca571d refs/tags/Attic/gitweb/patchset_body
> > 781c1834f5419bdf81bb7f3750170ccd6b809174 refs/tags/TEMP
> > ...
> > 07cca3b30ee2b5d060e44e5b18d7c22929c63d1a refs/tags/v1.5.6.5
> > 781c1834f5419bdf81bb7f3750170ccd6b809174 refs/tags/v1.5.6.5^{}
> >
> > Now in this example we have three refs pointing to commit object
> > 781c1834: refs/heads/maint, refs/tags/TEMP and refs/tags/v1.5.6.5.
> > From those only refs/tags/v1.5.6.5 is (via) tag, even though TEMP
> > is in tags namespace. Currently git_get_references() strips '^{}'
> > indirect reference marker from the output (from refname), and doesn't
> > make use of it. One solution would be to not stip it in
> > git_get_references(), but leave it, and strip it and make use of
> > it (if ref ends with '^{}' it must be tag object) in format_ref_marker().
>
> Ah, I see what you mean. If I understand correctly, this particular
> situation is only a problem with tags, as they can be either
> lighweight tags (that reference a commit) or actual tag objects (that
> are indirect references to commits and direct references to
> themselves), whereas everything else is just direct references to
> object.
Yes, properly managed git repository should have refs pointing to
tag objects only in 'refs/tags' (tags) namespace.
> Handling this requires a couple of extra info to be carried
> over in $refs, so I guess I'll have to experiment with it a little
> since it would require a more extensive change than I originally
> planned.
This "couple of extra info" could be just '^{}' suffix. So I don't
think it would be very complicated.
You could simply do not strip '^{}' suffix in git_get_references()
subroutine (so for example $refs->{$id} could be "tags/v1.6.0^{}",
and not simply "tags/v1.6.0" when $id is sha-1 of a _commit_ indirectly
referenced by v1.6.0, i.e. referenced by v1.6.0 _tag_), and strip
it and make use of it in format_ref_marker():
if ($ref =~ s/\^\{\}$//) {
# $ref is a tag
} else {
# $ref points directly to object
}
HTH.
P.S. I have re-added git mailing list to Cc:.
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2008-08-22 10:57 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-21 18:04 [PATCH] gitweb: ref markers link to named shortlogs Giuseppe Bilotta
2008-08-21 21:32 ` Jakub Narebski
2008-08-22 7:21 ` Giuseppe Bilotta
2008-08-22 8:49 ` Jakub Narebski
[not found] ` <cb7bb73a0808220231w37d2341eic56cabb595399f68@mail.gmail.com>
2008-08-22 10:56 ` Jakub Narebski [this message]
2008-08-22 12:34 ` Giuseppe Bilotta
2008-08-22 12:39 ` [PATCH v4] " Giuseppe Bilotta
2008-08-22 13:01 ` Jakub Narebski
2008-08-22 13:20 ` Giuseppe Bilotta
2008-08-22 13:42 ` Jakub Narebski
2008-08-22 14:03 ` Giuseppe Bilotta
2008-08-22 13:29 ` [PATCH v5] " Giuseppe Bilotta
2008-08-24 23:53 ` Jakub Narebski
2008-08-25 2:05 ` Miklos Vajna
2008-08-25 2:44 ` Jakub Narebski
2008-08-25 4:11 ` Junio C Hamano
2008-08-25 18:42 ` Jakub Narebski
2008-08-25 19:48 ` Junio C Hamano
2008-08-26 12:16 ` [PATCH v6] " Giuseppe Bilotta
2008-08-26 13:09 ` [PATCH v7] " Giuseppe Bilotta
2008-08-22 8:03 ` [PATCHv3] " Giuseppe Bilotta
2008-08-24 19:30 ` [PATCH] " Lea Wiemann
2008-08-24 19:41 ` Giuseppe Bilotta
2008-08-24 20:37 ` Jakub Narebski
2008-08-25 23:28 ` Giuseppe Bilotta
2008-08-26 8:15 ` Jakub Narebski
2008-08-26 10:58 ` Giuseppe Bilotta
2008-08-26 11:49 ` Jakub Narebski
2008-08-26 12:29 ` Giuseppe Bilotta
2008-08-27 18:36 ` Giuseppe Bilotta
2008-08-28 1:43 ` Lea Wiemann
2008-08-28 6:26 ` Giuseppe Bilotta
2008-08-28 6:48 ` Jakub Narebski
-- strict thread matches above, loose matches on Subject: below --
2008-08-02 15:39 Giuseppe Bilotta
2008-08-03 12:03 ` Petr Baudis
2008-08-03 13:14 ` Giuseppe Bilotta
2008-08-03 13:20 ` Petr Baudis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200808221256.21805.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
--cc=giuseppe.bilotta@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).