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.kartas...@gmail.com>
---
 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to