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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.