diff --git a/gitweb.pl b/gitweb.pl
index dd5fbdc2a8..6d604d732e 100755
--- a/gitweb.pl
+++ b/gitweb.pl
@@ -157,6 +157,47 @@ sub git_head {
return $head;
}
+sub git_commit {
+ my $commit = shift;
+ my %co;
+ my @parents;
+
+ open my $fd, "-|", "$gitbin/cat-file", "commit", $commit;
+ while (my $line = <$fd>) {
+ chomp($line);
+ last if $line eq "";
+ if ($line =~ m/^tree (.*)$/) {
+ $co{'tree'} = $1;
+ } elsif ($line =~ m/^parent (.*)$/) {
+ push @parents, $1;
+ } elsif ($line =~ m/^committer (.*>) ([0-9]+) (.*)$/) {
+ $co{'committer'} = $1;
+ $co{'committer_time'} = $2;
+ $co{'committer_timezone'} = $3;
+ } elsif ($line =~ m/^author (.*>) ([0-9]+) (.*)$/) {
+ $co{'$author'} = $1;
+ $co{'$author_time'} = $2;
+ $co{'$author_timezone'} = $3;
+ }
+ }
+ my $shortlog = <$fd>;
+ chomp($shortlog);
+ $co{'shortlog'} = escapeHTML($shortlog);
+ my $comment = $shortlog . "
";
+ while (my $line = <$fd>) {
+ chomp($line);
+ if ($line =~ m/signed-off-by:/i) {
+ $comment .= '