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

Re: [PATCHv8 4/7] gitweb: (gr)avatar support

From
Jakub Narebski <jnareb@gmail.com>
Date
Jun 30, 2009, 20:16 UTC
Message-ID
<200906302216.48872.jnareb@gmail.com>
In-Reply-To
<1246312854-3365-5-git-send-email-giuseppe.bilotta@gmail.com>
On Tue, 30 Jun 2009, Giuseppe Bilotta wrote:
Show 12 quoted lines
> Introduce avatar support: the feature adds the appropriate img tag next
> to author and committer in commit(diff), history, shortlog, log and tag
> views. Multiple avatar providers are possible, but only gravatar is
> implemented at the moment.
> 
> Gravatar support depends on Digest::MD5, which is a core package since
> Perl 5.8. If gravatars are activated but Digest::MD5 cannot be found,
> the feature will be automatically disabled.
> 
> No avatar provider is selected by default, except in the t9500 test.
> 
> Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
I like both commit message and comprehensive comments.
Acked-by: Jakub Narebski <jnareb@gmail.com>
[...]
Show 13 quoted lines
> +# Insert an avatar for the given $email at the given $size if the feature
> +# is enabled.
> +sub git_get_avatar {
> +	my ($email, %opts) = @_;
> +	my $pre_white  = ($opts{-pad_before} ? "&nbsp;" : "");
> +	my $post_white = ($opts{-pad_after}  ? "&nbsp;" : "");
> +	$opts{-size} ||= 'default';
> +	my $size = $avatar_size{$opts{-size}} || $avatar_size{'default'};
> +	my $url = "";
> +	if ($git_avatar eq 'gravatar') {
> +		$url = "http://www.gravatar.com/avatar/" .
> +			Digest::MD5::md5_hex(lc $email) . "?s=$size";
> +	}

I guess that you use short form 's' instead of 'size' to make URL (and therefore gitweb pages) shorter, isn't it?

Show 10 quoted lines
> +	# Currently only gravatars are supported, but other forms such as
> +	# picons can be added by putting an else up here and defining $url
> +	# as needed. If no variant puts something in $url, we assume avatars
> +	# are completely disabled/unavailable.
> +	if ($url) {
> +		return $pre_white .
> +		       "<img width=\"$size\" " .
> +		            "class=\"avatar\" " .
> +		            "src=\"$url\" " .
> +		       "/>" . $post_white;

Nitpicky sidenote: it might be more readable to use qq( ... ) quote-like operator to avoid need to escape \" while providing variable interpolation. But on the other hand it might not: this is more obscure Perl operator.

Nevertheless it is not something to worry about (and certainly not something that would require resend).

Show 65 quoted lines
> +	} else {
> +		return "";
> +	}
> +}
> +
>  # format the author name of the given commit with the given tag
>  # the author name is chopped and escaped according to the other
>  # optional parameters (see chop_str).
> @@ -1476,7 +1547,9 @@ sub format_author_html {
>  	my $tag = shift;
>  	my $co = shift;
>  	my $author = chop_and_escape_str($co->{'author_name'}, @_);
> -	return "<$tag class=\"author\">" . $author . "</$tag>";
> +	return "<$tag class=\"author\">" .
> +	       git_get_avatar($co->{'author_email'}, -pad_after => 1) .
> +	       $author . "</$tag>";
>  }
>  
>  # format git diff header line, i.e. "diff --(git|combined|cc) ..."
> @@ -3252,7 +3325,8 @@ sub git_print_authorship {
>  	      esc_html($co->{'author_name'}) .
>  	      " [$ad{'rfc2822'}";
>  	print_local_time(%ad) if ($opts{-localtime});
> -	print "]</$tag>\n";
> +	print "]" . git_get_avatar($co->{'author_email'}, -pad_before => 1)
> +		  . "</$tag>\n";
>  }
>  
>  # Outputs table rows containing the full author or committer information,
> @@ -3267,7 +3341,10 @@ sub git_print_authorship_rows {
>  	@people = ('author', 'committer') unless @people;
>  	foreach my $who (@people) {
>  		my %wd = parse_date($co->{"${who}_epoch"}, $co->{"${who}_tz"});
> -		print "<tr><td>$who</td><td>" . esc_html($co->{$who}) . "</td></tr>\n".
> +		print "<tr><td>$who</td><td>" . esc_html($co->{$who}) . "</td>" .
> +		      "<td rowspan=\"2\">" .
> +		      git_get_avatar($co->{"${who}_email"}, -size => 'double') .
> +		      "</td></tr>\n" .
>  		      "<tr>" .
>  		      "<td></td><td> $wd{'rfc2822'}";
>  		print_local_time(%wd);
> diff --git a/t/t9500-gitweb-standalone-no-errors.sh b/t/t9500-gitweb-standalone-no-errors.sh
> index d539619..6275181 100755
> --- a/t/t9500-gitweb-standalone-no-errors.sh
> +++ b/t/t9500-gitweb-standalone-no-errors.sh
> @@ -660,6 +660,7 @@ cat >>gitweb_config.perl <<EOF
>  
>  \$feature{'blame'}{'override'} = 1;
>  \$feature{'snapshot'}{'override'} = 1;
> +\$feature{'avatar'}{'override'} = 1;
>  EOF
>  
>  test_expect_success \
> @@ -671,6 +672,7 @@ test_expect_success \
>  	'config override: tree view, features disabled in repo config' \
>  	'git config gitweb.blame no &&
>  	 git config gitweb.snapshot none &&
> +	 git config gitweb.avatar gravatar &&
>  	 gitweb_run "p=.git;a=tree"'
>  test_debug 'cat gitweb.log'
>  
> -- 
> 1.6.3.rc1.192.gdbfcb
> 
> 
-- 
Jakub Narebski
Poland
Previous: Giuseppe BilottaNext: Jakub Narebski
Message 15 of 22 in “[PATCHv8 0/7] gitweb: avatar support”
  1. Giuseppe BilottaJun 29, 2009
  2. 1/7 gitweb: refactor author name insertionGiuseppe Bilotta, Jun 29, 2009
  3. 2/7 gitweb: uniform author info for commit and commitdiffGiuseppe Bilotta, Jun 29, 2009
  4. 3/7 gitweb: use git_print_authorship_rows in 'tag' view tooGiuseppe Bilotta, Jun 29, 2009
  5. 4/7 gitweb: (gr)avatar supportGiuseppe Bilotta, Jun 29, 2009
  6. 5/7 gitweb: gravatar url cacheGiuseppe Bilotta, Jun 29, 2009
  7. 6/7 gitweb: picon avatar providerGiuseppe Bilotta, Jun 29, 2009
  8. 7/7 gitweb: add empty alt text to avatar imgGiuseppe Bilotta, Jun 29, 2009
  9. Jakub NarebskiJun 30, 2009
  10. Jakub NarebskiJun 30, 2009
  11. Giuseppe BilottaJun 30, 2009
  12. Jakub NarebskiJun 30, 2009
  13. Junio C HamanoJun 30, 2009
  14. Giuseppe BilottaJun 30, 2009
  15. Jakub NarebskiJun 30, 2009
  16. Jakub NarebskiJun 30, 2009
  17. Jakub NarebskiJun 30, 2009
  18. Jakub NarebskiJun 30, 2009
  19. Giuseppe BilottaJun 30, 2009
  20. Jakub NarebskiJun 30, 2009
  21. Giuseppe BilottaJun 30, 2009
  22. Jakub NarebskiJul 1, 2009

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.