We only want to know the direct parents of a given commit object, these parents are available in the --header output of rev-list. If --parents is supplied with --full-history the output includes merge commits that aren't relevant. Signed-off-by: Robert Fitzsimons <robfitz@xxxxxxxx> --- gitweb/gitweb.perl | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 6bd57a4..c645686 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -1281,13 +1281,14 @@ sub parse_commit_text { if (!($header =~ m/^[0-9a-fA-F]{40}/)) { return; } - ($co{'id'}, my @parents) = split ' ', $header; - $co{'parents'} = \@parents; - $co{'parent'} = $parents[0]; + $co{'id'} = $header; + my @parents; while (my $line = shift @commit_lines) { last if $line eq "\n"; if ($line =~ m/^tree ([0-9a-fA-F]{40})$/) { $co{'tree'} = $1; + } elsif ($line =~ m/^parent ([0-9a-fA-F]{40})$/) { + push @parents, $1; } elsif ($line =~ m/^author (.*) ([0-9]+) (.*)$/) { $co{'author'} = $1; $co{'author_epoch'} = $2; @@ -1314,6 +1315,8 @@ sub parse_commit_text { if (!defined $co{'tree'}) { return; }; + $co{'parents'} = \@parents; + $co{'parent'} = $parents[0]; foreach my $title (@commit_lines) { $title =~ s/^ //; @@ -1371,7 +1374,6 @@ sub parse_commit { open my $fd, "-|", git_cmd(), "rev-list", "--header", - "--parents", "--max-count=1", $commit_id, "--", @@ -1414,7 +1416,6 @@ sub parse_commits { open my $fd, "-|", git_cmd(), "rev-list", "--header", - "--parents", ($arg ? ($arg) : ()), ("--max-count=" . $maxcount), # Add once rev-list supports the --skip option -- 1.4.4.3.ge655-dirty - 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