git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/5] gitweb: Option for filling only specified info in fill_project_list_info

From
Jakub Narebski <jnareb@gmail.com>
Date
Feb 10, 2012, 13:56 UTC
Message-ID
<201202101456.45944.jnareb@gmail.com>
In-Reply-To
<7vvcnftvb5.fsf@alter.siamese.dyndns.org>
On Fri, 10 Feb 2012, Junio C Hamano wrote:
Show 24 quoted lines
> 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. [...]

Thanks for noticing that... though I think more important is that some further command would mark only 'age_string' as needed, and fill_project_list_info() wouldn't notice that it needs to run git_get_last_activity() if it checks only 'age'.

Show 29 quoted lines
>> 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".

Passing two lists as parameters is a bit harder and makes for more complicated API.

So what you mean is that instead of proposed
  if (project_info_needs_filled($pr, 'age', @fill_only) ||
      project_info_needs_filled($pr, 'age_string', @fill_only) {
it should be
  if (project_info_needs_filled($pr, 'age', 'age_string', \@fill_only) {
or
  if (project_info_needs_filled($pr, ['age', 'age_string'], @fill_only) {

(with either "..., 'owner', ..." or "..., [ 'owner' ], ..." for single-key filling), or

  if (project_info_needs_filled($pr, ['age', 'age_string'], \@fill_only) {
Is it?
-- 
Jakub Narebski
Poland
Previous: Junio C HamanoNext: Junio C Hamano
Message 8 of 21 in “gitweb: Faster and imrpoved project search”
  1. 0/5 gitweb: Faster and imrpoved project searchJakub Narebski, Feb 4, 2012
  2. 1/5 gitweb: Option for filling only specified info in fill_project_list_infoJakub Narebski, Feb 4, 2012
  3. Junio C HamanoFeb 9, 2012
  4. Jakub NarebskiFeb 9, 2012
  5. Junio C HamanoFeb 9, 2012
  6. Jakub NarebskiFeb 9, 2012
  7. Junio C HamanoFeb 9, 2012
  8. Jakub NarebskiFeb 10, 2012
  9. Junio C HamanoFeb 10, 2012
  10. Jakub NarebskiFeb 10, 2012
  11. Junio C HamanoFeb 10, 2012
  12. Jakub NarebskiFeb 10, 2012
  13. Junio C HamanoFeb 10, 2012
  14. Jakub NarebskiFeb 10, 2012
  15. 2/5 gitweb: Faster project searchJakub Narebski, Feb 4, 2012
  16. 3/5 gitweb: Highlight matched part of project name when searching projectsJakub Narebski, Feb 4, 2012
  17. 4/5 gitweb: Highlight matched part of project description when searching projectsJakub Narebski, Feb 4, 2012
  18. 5/5 gitweb: Highlight matched part of shortened project descriptionJakub Narebski, Feb 4, 2012
  19. 5/5 gitweb: Highlight matched part of shortened project descriptionJakub Narebski, Feb 4, 2012
  20. Felipe ContrerasFeb 4, 2012
  21. Jakub NarebskiFeb 4, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.