shows gpg signature (if any) for commit message in gitweb in case of successfully verifying the signature highlights it with green Signed-off-by: Victor Kartashov <victor.kartashov@xxxxxxxxx> --- gitweb/gitweb.perl | 33 ++++++++++++++++++++++++++------- gitweb/static/gitweb.css | 5 +++++ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 79057b7..0b41392 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -3430,8 +3430,9 @@ sub parse_commit_text { my ($commit_text, $withparents) = @_; my @commit_lines = split '\n', $commit_text; my %co; + my @signature = (); - pop @commit_lines; # Remove '\0' + pop @commit_lines if ($commit_lines[-1] eq "\0"); # Remove '\0' if (! @commit_lines) { return; @@ -3469,6 +3470,10 @@ sub parse_commit_text { $co{'committer_name'} = $co{'committer'}; } } + elsif ($line =~ /^gpg: /) + { + push @signature, $line; + } } if (!defined $co{'tree'}) { return; @@ -3508,6 +3513,11 @@ sub parse_commit_text { foreach my $line (@commit_lines) { $line =~ s/^ //; } + push(@commit_lines, "") if(scalar(@signature) > 0); + foreach my $sig (@signature) + { + push(@commit_lines, $sig); + } $co{'comment'} = \@commit_lines; my $age = time - $co{'committer_epoch'}; @@ -3530,13 +3540,15 @@ sub parse_commit { local $/ = "\0"; - open my $fd, "-|", git_cmd(), "rev-list", - "--parents", - "--header", - "--max-count=1", + + + open my $fd, "-|", git_cmd(), "show", + "--quiet", + "--date=raw", + "--pretty=format:%H %P%ntree %T%nparent %P%nauthor %an <%ae> %ad%ncommitter %cn <%ce> %cd%n%GG%n%s%n%n%b", $commit_id, "--", - or die_error(500, "Open git-rev-list failed"); + or die_error(500, "Open git-show failed"); %co = parse_commit_text(<$fd>, 1); close $fd; @@ -4571,7 +4583,14 @@ sub git_print_log { # print log my $skip_blank_line = 0; foreach my $line (@$log) { - if ($line =~ m/^\s*([A-Z][-A-Za-z]*-[Bb]y|C[Cc]): /) { + if ($line =~ m/^gpg:(.)+Good(.)+/) { + if (! $opts{'-remove_signoff'}) { + print "<span class=\"good_sign\">" . esc_html($line) . "</span><br/>\n"; + $skip_blank_line = 1; + } + next; + } + elsif ($line =~ m/^\s*([A-Z][-A-Za-z]*-[Bb]y|C[Cc]): /) { if (! $opts{'-remove_signoff'}) { print "<span class=\"signoff\">" . esc_html($line) . "</span><br/>\n"; $skip_blank_line = 1; diff --git a/gitweb/static/gitweb.css b/gitweb/static/gitweb.css index 3212601..0b7479c 100644 --- a/gitweb/static/gitweb.css +++ b/gitweb/static/gitweb.css @@ -136,6 +136,11 @@ span.signoff { color: #888888; } +span.good_sign { + font-weight: bold; + background-color: #aaffaa; +} + div.log_link { padding: 0px 8px; font-size: 70%; -- 1.8.3.2 -- 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