Browse Source

gitweb: make repeated calls to git_get_project_owner() bearable

If repeated calls to git_get_project_owner() are made, we would have read the
same file over and over again.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Junio C Hamano 18 years ago
parent
commit
478524508e
  1. 28
      gitweb/gitweb.perl

28
gitweb/gitweb.perl

@ -1465,12 +1465,12 @@ sub git_get_projects_list { @@ -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 { @@ -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->{$pr} = 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");
}

Loading…
Cancel
Save