From 703ac7102fb66f748f9a636f57852909b4425496 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers@suse.de>
Date: Sun, 7 Aug 2005 20:03:14 +0200
Subject: [PATCH] v021

---
 gitweb.pl | 50 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 45 insertions(+), 5 deletions(-)

diff --git a/gitweb.pl b/gitweb.pl
index dd5fbdc2a8a..6d604d732e1 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 . "<br/>";
+	while (my $line = <$fd>) {
+			chomp($line);
+			if ($line =~ m/signed-off-by:/i) {
+				$comment .= '<div class="signed_off">' . escapeHTML($line) . "<br/></div>\n";
+			} else {
+				$comment .= escapeHTML($line) . "<br/>\n";
+			}
+	}
+	$co{'comment'} = $comment;
+	close $fd;
+
+	return %co;
+}
+
 sub git_diff {
 	my $old_name = shift || "/dev/null";
 	my $new_name = shift || "/dev/null";
@@ -408,11 +449,10 @@ if ($action eq "blob") {
 			print "</td>";
 			print "</tr>\n";
 		} elsif ($action eq "rss") {
-			if ($i < 12) {
-				print "<item>\n\t<title>$age_string: $shortlog</title>\n";
-				print "\t<link> " . $cgi->url() . "/$project/commit/$commit</link>\n";
-				print "</item>\n";
-			}
+			last if ($i >= 12);
+			print "<item>\n\t<title>$age_string: $shortlog</title>\n";
+			print "\t<link> " . $cgi->url() . "/$project/commit/$commit</link>\n";
+			print "</item>\n";
 		}
 	}
 	if ($action eq "log") {