Git development
 help / color / mirror / Atom feed
From: "Giuseppe Bilotta" <giuseppe.bilotta@gmail.com>
To: "Junio C Hamano" <gitster@pobox.com>
Cc: git@vger.kernel.org, "Jakub Narebski" <jnareb@gmail.com>,
	"Petr Baudis" <pasky@suse.cz>
Subject: Re: [PATCHv3 3/4] gitweb: separate heads and remotes lists
Date: Mon, 17 Nov 2008 14:11:02 +0100	[thread overview]
Message-ID: <cb7bb73a0811170511s4df6efbbl220fa89469388aca@mail.gmail.com> (raw)
In-Reply-To: <7viqqn377m.fsf@gitster.siamese.dyndns.org>

On Sun, Nov 16, 2008 at 6:34 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Giuseppe Bilotta <giuseppe.bilotta@gmail.com> writes:
>> -     my @headlist = git_get_heads_list(16);
>> +     my @headlist = git_get_heads_list(16, 'heads');
>> +     my @remotelist = $remote_heads ? git_get_heads_list(16, 'remotes') : ();
>
> Wasteful to run one for-each-ref for each list.
>
> You earlier introduced $ref_item{'class'} so that you can differenciate
> what you got from git_get_heads_list(); make use of it, perhaps like:
>
>        my @heads_list = git_get_heads_list(16, \%head_class);
>        my @headlist = grep { $_->{'class'} eq 'head' } @heads_list;
>        my @remotelist = grep { $_->{'class'} eq 'remote' } @heads_list;
>
> By the way, your [2/4] used "heads" and "remotes" as class, while your
> [1/4] stored 'head' and 'remote' in $ref_item{'class'}.  Notice the above
> suggestion corrects this discrepancy as well.

Although I agree with the head_class idea, I would like to point out
that doing a single git call to retrieve all refs and then selecting
the ones we want and doing multiple git calls are not equivalent.

First of all, with multiple calls we can limit the calls to retrieve
at most 16 refs of each kind, whereas this cannot be done with a
single call for all the refs. I'm not sure however, performance-wise,
if it's faster to filter the first 16 refs of each after retrieving
all of them, or doing multiple calls, especially with lots of refs.

Moreover, gitweb is already doing multiple for-each-ref calls to get
tags and heads. I guess that at this point we could go the extra mile
and include tags in the refs management. Of course, the problem of how
to handle the rate limiting remains.


-- 
Giuseppe "Oblomov" Bilotta

  reply	other threads:[~2008-11-17 13:12 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-16 13:28 [PATCHv3 0/4] gitweb: remote heads feature Giuseppe Bilotta
2008-11-16 13:28 ` [PATCHv3 1/4] gitweb: introduce remote_heads feature Giuseppe Bilotta
2008-11-16 13:28   ` [PATCHv3 2/4] gitweb: git_get_heads_list accepts an optional list of refs Giuseppe Bilotta
2008-11-16 13:28     ` [PATCHv3 3/4] gitweb: separate heads and remotes lists Giuseppe Bilotta
2008-11-16 13:28       ` [PATCHv3 4/4] gitweb: link heads and remotes view Giuseppe Bilotta
2008-11-16 17:34       ` [PATCHv3 3/4] gitweb: separate heads and remotes lists Junio C Hamano
2008-11-17 13:11         ` Giuseppe Bilotta [this message]
2008-11-17 13:31           ` Giuseppe Bilotta
2008-11-16 17:29     ` [PATCHv3 2/4] gitweb: git_get_heads_list accepts an optional list of refs Junio C Hamano
2008-11-17  1:09       ` Jakub Narebski
2008-11-16 17:16   ` [PATCHv3 1/4] gitweb: introduce remote_heads feature Junio C Hamano
2008-11-16 17:40     ` Giuseppe Bilotta
2008-11-16 18:14       ` Junio C Hamano
2008-11-16 18:21         ` Giuseppe Bilotta

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=cb7bb73a0811170511s4df6efbbl220fa89469388aca@mail.gmail.com \
    --to=giuseppe.bilotta@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jnareb@gmail.com \
    --cc=pasky@suse.cz \
    /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