提交 cdd4037d 编写于 作者: J Junio C Hamano

gitweb: optimize per-file history generation

The rev-list command that is recent enough can filter commits
based on paths they touch, so use it instead of generating the
full list and limiting it by passing it with diff-tree --stdin.

[jc: The patch originally came from Luben Tuikov but the it was
 corrupt, but it was short enough to be applied by hand.  I
 added the --full-history to make the output compatible with the
 original while doing so.]
Signed-off-by: NJunio C Hamano <junkio@cox.net>
上级 0556a11a
......@@ -2295,16 +2295,13 @@ sub git_history {
"</div>\n";
print "<div class=\"page_path\"><b>/" . esc_html($file_name) . "</b><br/></div>\n";
open my $fd, "-|", "$gitbin/git-rev-list $hash | $gitbin/git-diff-tree -r --stdin -- \'$file_name\'";
my $commit;
open my $fd, "-|",
"$gitbin/git-rev-list --full-history $hash -- \'$file_name\'";
print "<table cellspacing=\"0\">\n";
my $alternate = 0;
while (my $line = <$fd>) {
if ($line =~ m/^([0-9a-fA-F]{40})/){
$commit = $1;
next;
}
if ($line =~ m/^:([0-7]{6}) ([0-7]{6}) ([0-9a-fA-F]{40}) ([0-9a-fA-F]{40}) (.)\t(.*)$/ && (defined $commit)) {
my $commit = $1;
my %co = git_read_commit($commit);
if (!%co) {
next;
......@@ -2336,7 +2333,6 @@ sub git_history {
}
print "</td>\n" .
"</tr>\n";
undef $commit;
}
}
print "</table>\n";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册