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 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).