* [PATCH] gitweb: prefer git_get_project_owner() over get_file_owner() [not found] ` <11834866911868-git-send-email-vmiklos@frugalware.org> @ 2007-07-03 22:11 ` Miklos Vajna 2007-07-04 5:10 ` Junio C Hamano 0 siblings, 1 reply; 3+ messages in thread From: Miklos Vajna @ 2007-07-03 22:11 UTC (permalink / raw) To: git; +Cc: gitster This way if $projects_list exists, it'll be used, otherwise get_file_owner() will be used as before. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> --- Sorry for sending it again, even if sending it to myself first, the long description was left out somehow. Also it seems that i had some problem with git-send-email, my bad. gitweb/gitweb.perl | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index dbfb044..6201b90 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -3166,7 +3166,7 @@ sub git_project_list_body { $pr->{'descr'} = chop_str($descr, 25, 5); } if (!defined $pr->{'owner'}) { - $pr->{'owner'} = get_file_owner("$projectroot/$pr->{'path'}") || ""; + $pr->{'owner'} = git_get_project_owner("$pr->{'path'}") || ""; } if ($check_forks) { my $pname = $pr->{'path'}; @@ -3590,7 +3590,7 @@ sub git_project_index { foreach my $pr (@projects) { if (!exists $pr->{'owner'}) { - $pr->{'owner'} = get_file_owner("$projectroot/$pr->{'path'}"); + $pr->{'owner'} = git_get_project_owner("$pr->{'path'}"); } my ($path, $owner) = ($pr->{'path'}, $pr->{'owner'}); -- 1.5.2.2 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] gitweb: prefer git_get_project_owner() over get_file_owner() 2007-07-03 22:11 ` [PATCH] gitweb: prefer git_get_project_owner() over get_file_owner() Miklos Vajna @ 2007-07-04 5:10 ` Junio C Hamano 2007-07-07 19:05 ` Luben Tuikov 0 siblings, 1 reply; 3+ messages in thread From: Junio C Hamano @ 2007-07-04 5:10 UTC (permalink / raw) To: Miklos Vajna; +Cc: git, Petr Baudis, Jakub Narebski, Luben Tuikov Miklos Vajna <vmiklos@frugalware.org> writes: > This way if $projects_list exists, it'll be used, otherwise get_file_owner() > will be used as before. > > Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> The patch looks good to me. HOWEVER. It strikes me that repeated call to git_get_project_owner() would be way too inefficient. Not caller's fault. How about doing something like this on top of your patch? gitweb/gitweb.perl | 28 ++++++++++++++++++++-------- 1 files changed, 20 insertions(+), 8 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index dbfb044..f114585 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -1465,12 +1465,12 @@ sub git_get_projects_list { return @list; } -sub git_get_project_owner { - my $project = shift; - my $owner; +our $gitweb_project_owner = undef; +sub git_get_project_list_from_file { - return undef unless $project; + return if (defined $gitweb_project_owner); + $gitweb_project_owner = {}; # read from file (url-encoded): # 'git%2Fgit.git Linus+Torvalds' # 'libs%2Fklibc%2Fklibc.git H.+Peter+Anvin' @@ -1482,13 +1482,25 @@ sub git_get_project_owner { my ($pr, $ow) = split ' ', $line; $pr = unescape($pr); $ow = unescape($ow); - if ($pr eq $project) { - $owner = to_utf8($ow); - last; - } + $gitweb_project_owner->{$project} = to_utf8($ow); } close $fd; } +} + +sub git_get_project_owner { + my $project = shift; + my $owner; + + return undef unless $project; + + if (!defined $gitweb_project_owner) { + git_get_project_list_from_file(); + } + + if (exists $gitweb_project_owner->{$project}) { + $owner = $gitweb_project_owner->{$project}; + } if (!defined $owner) { $owner = get_file_owner("$projectroot/$project"); } ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] gitweb: prefer git_get_project_owner() over get_file_owner() 2007-07-04 5:10 ` Junio C Hamano @ 2007-07-07 19:05 ` Luben Tuikov 0 siblings, 0 replies; 3+ messages in thread From: Luben Tuikov @ 2007-07-07 19:05 UTC (permalink / raw) To: Junio C Hamano, Miklos Vajna Cc: git, Petr Baudis, Jakub Narebski, Luben Tuikov --- Junio C Hamano <gitster@pobox.com> wrote: > Miklos Vajna <vmiklos@frugalware.org> writes: > > > This way if $projects_list exists, it'll be used, otherwise get_file_owner() > > will be used as before. > > > > Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> > > The patch looks good to me. > > HOWEVER. > > It strikes me that repeated call to git_get_project_owner() > would be way too inefficient. Not caller's fault. > > How about doing something like this on top of your patch? Yes, this sounds sensible. ACK. Luben > > gitweb/gitweb.perl | 28 ++++++++++++++++++++-------- > 1 files changed, 20 insertions(+), 8 deletions(-) > > diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl > index dbfb044..f114585 100755 > --- a/gitweb/gitweb.perl > +++ b/gitweb/gitweb.perl > @@ -1465,12 +1465,12 @@ sub git_get_projects_list { > return @list; > } > > -sub git_get_project_owner { > - my $project = shift; > - my $owner; > +our $gitweb_project_owner = undef; > +sub git_get_project_list_from_file { > > - return undef unless $project; > + return if (defined $gitweb_project_owner); > > + $gitweb_project_owner = {}; > # read from file (url-encoded): > # 'git%2Fgit.git Linus+Torvalds' > # 'libs%2Fklibc%2Fklibc.git H.+Peter+Anvin' > @@ -1482,13 +1482,25 @@ sub git_get_project_owner { > my ($pr, $ow) = split ' ', $line; > $pr = unescape($pr); > $ow = unescape($ow); > - if ($pr eq $project) { > - $owner = to_utf8($ow); > - last; > - } > + $gitweb_project_owner->{$project} = to_utf8($ow); > } > close $fd; > } > +} > + > +sub git_get_project_owner { > + my $project = shift; > + my $owner; > + > + return undef unless $project; > + > + if (!defined $gitweb_project_owner) { > + git_get_project_list_from_file(); > + } > + > + if (exists $gitweb_project_owner->{$project}) { > + $owner = $gitweb_project_owner->{$project}; > + } > if (!defined $owner) { > $owner = get_file_owner("$projectroot/$project"); > } > > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2007-07-07 19:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <11834862893846-git-send-email-vmiklos@frugalware.org>
[not found] ` <11834866911868-git-send-email-vmiklos@frugalware.org>
2007-07-03 22:11 ` [PATCH] gitweb: prefer git_get_project_owner() over get_file_owner() Miklos Vajna
2007-07-04 5:10 ` Junio C Hamano
2007-07-07 19:05 ` Luben Tuikov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox