Re: [PATCH] gitweb: prefer git_get_project_owner() over get_file_owner()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



--- Junio C Hamano <gitster@xxxxxxxxx> wrote:
> Miklos Vajna <vmiklos@xxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxx>
> 
> 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");
>  	}
> 
> 

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux