From: Junio C Hamano <gitster@pobox.com>
To: Jakub Narebski <jnareb@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 1/5] gitweb: Option for filling only specified info in fill_project_list_info
Date: Thu, 09 Feb 2012 15:56:46 -0800 [thread overview]
Message-ID: <7vvcnftvb5.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <201202100052.26399.jnareb@gmail.com> (Jakub Narebski's message of "Fri, 10 Feb 2012 00:52:26 +0100")
Jakub Narebski <jnareb@gmail.com> writes:
> On Fri, 10 Feb 2012, Junio C Hamano wrote:
> ...
>> That still does not answer the fundamental issues I had with the presented
>> API: why does it take only a single $key (please re-read my "A, B and C"
>> example), and what does that single $key intersecting with @fill_only have
>> anything to do with "needs-filling"?
>
> project_info_needs_filling() in absence of @fill_only is just a thin
> wrapper around "!defined $pr->{$key}", it checks for each key if it needs
> to be filled.
>
> It is used like this
>
> if (project_info_needs_filled("A", "A, B, C")) {
> fill A
> }
> if (project_info_needs_filled("B", "A, B, C")) {
> fill B
> }
> ...
>
>> After all, that 'age' check actually wants to fill 'age' and 'age_string'
>> in the project. Even if some other codepath starts filling 'age' in the
>> project with a later change, the current callers of fill_project_list_info
>> expects _both_ to be filled. So "I know the current implementation fills
>> both at the same time, so checking 'age' alone is sufficient" is not an
>> answer that shows good taste in the API design.
>
> It is not as much matter of API, as the use of checks in loop in
> fill_project_list_info().
>
> What is now
>
> my (@activity) = git_get_last_activity($pr->{'path'});
> unless (@activity) {
> next PROJECT;
> }
> ($pr->{'age'}, $pr->{'age_string'}) = @activity;
>
> should be
>
> if (!defined $pr->{'age'} ||
> !defined $pr->{'age_string'}) {
> my (@activity) = git_get_last_activity($pr->{'path'});
> unless (@activity) {
> next PROJECT;
> }
> ($pr->{'age'}, $pr->{'age_string'}) = @activity;
> }
Huh? Compare that with what you wrote above "It is used like this". This
is *NOT* using the API like that. The caller knows it wants both age and
age-string, and if even one of them is missing, do the work to fill both.
So why isn't the info-needs-filled API not checking _both_ with a single
call? It is only because you designed the API to accept only a single $key
instead of list of "here are what I care about".
next prev parent reply other threads:[~2012-02-09 23:56 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-04 12:47 [PATCH 0/5] gitweb: Faster and imrpoved project search Jakub Narebski
2012-02-04 12:47 ` [PATCH 1/5] gitweb: Option for filling only specified info in fill_project_list_info Jakub Narebski
2012-02-09 22:04 ` Junio C Hamano
2012-02-09 22:36 ` Jakub Narebski
2012-02-09 23:18 ` Junio C Hamano
2012-02-09 23:52 ` Jakub Narebski
2012-02-09 23:56 ` Junio C Hamano [this message]
2012-02-10 13:56 ` Jakub Narebski
2012-02-10 17:43 ` Junio C Hamano
2012-02-10 18:17 ` Jakub Narebski
2012-02-10 19:49 ` Junio C Hamano
2012-02-10 21:30 ` Jakub Narebski
2012-02-10 21:44 ` Junio C Hamano
2012-02-10 22:07 ` Jakub Narebski
2012-02-04 12:47 ` [PATCH 2/5] gitweb: Faster project search Jakub Narebski
2012-02-04 12:47 ` [PATCH 3/5] gitweb: Highlight matched part of project name when searching projects Jakub Narebski
2012-02-04 12:47 ` [PATCH 4/5] gitweb: Highlight matched part of project description " Jakub Narebski
2012-02-04 12:47 ` [PATCH/RFC 5/5] gitweb: Highlight matched part of shortened project description Jakub Narebski
2012-02-04 18:56 ` [PATCH/RFCv2 " Jakub Narebski
2012-02-04 20:07 ` [PATCH 0/5] gitweb: Faster and imrpoved project search Felipe Contreras
2012-02-04 20:59 ` Jakub Narebski
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=7vvcnftvb5.fsf@alter.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=jnareb@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.