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
parent
6abe0f0383
commit
478524508e
|
@ -1465,12 +1465,12 @@ sub git_get_projects_list {
|
||||||
return @list;
|
return @list;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub git_get_project_owner {
|
our $gitweb_project_owner = undef;
|
||||||
my $project = shift;
|
sub git_get_project_list_from_file {
|
||||||
my $owner;
|
|
||||||
|
|
||||||
return undef unless $project;
|
return if (defined $gitweb_project_owner);
|
||||||
|
|
||||||
|
$gitweb_project_owner = {};
|
||||||
# read from file (url-encoded):
|
# read from file (url-encoded):
|
||||||
# 'git%2Fgit.git Linus+Torvalds'
|
# 'git%2Fgit.git Linus+Torvalds'
|
||||||
# 'libs%2Fklibc%2Fklibc.git H.+Peter+Anvin'
|
# 'libs%2Fklibc%2Fklibc.git H.+Peter+Anvin'
|
||||||
|
@ -1482,13 +1482,25 @@ sub git_get_project_owner {
|
||||||
my ($pr, $ow) = split ' ', $line;
|
my ($pr, $ow) = split ' ', $line;
|
||||||
$pr = unescape($pr);
|
$pr = unescape($pr);
|
||||||
$ow = unescape($ow);
|
$ow = unescape($ow);
|
||||||
if ($pr eq $project) {
|
$gitweb_project_owner->{$pr} = to_utf8($ow);
|
||||||
$owner = to_utf8($ow);
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
close $fd;
|
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) {
|
if (!defined $owner) {
|
||||||
$owner = get_file_owner("$projectroot/$project");
|
$owner = get_file_owner("$projectroot/$project");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue