]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Rcs/git.pm
* The first git commit legitimately has no parents. Avoid recentchanges
[ikiwiki.git] / IkiWiki / Rcs / git.pm
index a9efbb0929b92a82d9272159d7e270332e111278..5507874e14d6020dbf931662f2c87aabb8058e54 100644 (file)
@@ -165,10 +165,7 @@ sub _parse_diff_tree ($@) { #{{{
        # Identification lines for the commit.
        while (my $line = shift @{ $dt_ref }) {
                # Regexps are semi-stolen from gitweb.cgi.
-               if ($line =~ m/^commit ([0-9a-fA-F]{40})$/) {
-                       $ci{'commit'} = $1;
-               }
-               elsif ($line =~ m/^tree ([0-9a-fA-F]{40})$/) {
+               if ($line =~ m/^tree ([0-9a-fA-F]{40})$/) {
                        $ci{'tree'} = $1;
                }
                elsif ($line =~ m/^parent ([0-9a-fA-F]{40})$/) {
@@ -199,10 +196,14 @@ sub _parse_diff_tree ($@) { #{{{
                }
        }
 
-       debug("No 'tree' or 'parents' seen in diff-tree output")
-           if !defined $ci{'tree'} || !defined $ci{'parents'};
+       debug("No 'tree' seen in diff-tree output") if !defined $ci{'tree'};
 
-       $ci{'parent'} = @{ $ci{'parents'} }[0] if defined $ci{'parents'};
+       if (defined $ci{'parents'}) {
+               $ci{'parent'} = @{ $ci{'parents'} }[0];
+       }
+       else {
+               $ci{'parent'} = 0 x 40;
+       }
 
        # Commit message.
        while (my $line = shift @{ $dt_ref }) {
@@ -258,7 +259,7 @@ sub git_commit_info ($;$) { #{{{
        $num ||= 1;
 
        my @raw_lines = run_or_die('git', 'log', "--max-count=$num", 
-               '--pretty=raw', '--raw', '--abbrev=40', '--always', '-m',
+               '--pretty=raw', '--raw', '--abbrev=40', '--always', '-c',
                '-r', $sha1, '--', '.');
        my ($prefix) = run_or_die('git', 'rev-parse', '--show-prefix');
 
@@ -366,7 +367,7 @@ sub rcs_recentchanges ($) { #{{{
 
        my @rets;
        foreach my $ci (git_commit_info('HEAD', $num)) {
-               my $title = @{ $ci->{'comment'} }[0];
+               my $title = join("\n", @{$ci->{'comment'}});
 
                # Skip redundant commits.
                next if ($title eq $dummy_commit_msg);
@@ -412,7 +413,7 @@ sub rcs_recentchanges ($) { #{{{
                        when       => $when,
                        message    => [@messages],
                        pages      => [@pages],
-               };
+               } if @pages;
 
                last if @rets >= $num;
        }
@@ -451,7 +452,7 @@ sub rcs_notify () { #{{{
                $message = join "\n", @{ $ci->{'comment'} };
        }
 
-       my $sha1 = $ci->{'commit'};
+       my $sha1 = $ci->{'sha1'};
 
        require IkiWiki::UserInfo;
        send_commit_mails(