From 1b318dacbda00d05566f300bb4a69cd913ce0e71 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 17 Jul 2008 16:53:54 -0400 Subject: [PATCH] git: Fix parsing of git logs with no commit messages at all. --- IkiWiki/Rcs/git.pm | 14 ++++++-------- debian/changelog | 1 + 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index c816d1bb5..26f2a39f2 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -197,7 +197,7 @@ sub _parse_diff_tree ($@) { #{{{ } debug("No 'tree' seen in diff-tree output") if !defined $ci{'tree'}; - + if (defined $ci{'parents'}) { $ci{'parent'} = @{ $ci{'parents'} }[0]; } @@ -205,15 +205,13 @@ sub _parse_diff_tree ($@) { #{{{ $ci{'parent'} = 0 x 40; } - # Commit message. - while (my $line = shift @{ $dt_ref }) { - if ($line =~ m/^$/) { - # Trailing empty line signals next section. - last; - }; + # Commit message (optional). + while ($dt_ref->[0] =~ /^ /) { + my $line = shift @{ $dt_ref }; $line =~ s/^ //; push @{ $ci{'comment'} }, $line; } + shift @{ $dt_ref } if $dt_ref->[0] =~ /^$/; # Modified files. while (my $line = shift @{ $dt_ref }) { @@ -360,7 +358,7 @@ sub rcs_recentchanges ($) { #{{{ my @rets; foreach my $ci (git_commit_info('HEAD', $num)) { # Skip redundant commits. - next if (@{$ci->{'comment'}}[0] eq $dummy_commit_msg); + next if ($ci->{'comment'} && @{$ci->{'comment'}}[0] eq $dummy_commit_msg); my ($sha1, $when) = ( $ci->{'sha1'}, diff --git a/debian/changelog b/debian/changelog index 16b352766..123721741 100644 --- a/debian/changelog +++ b/debian/changelog @@ -31,6 +31,7 @@ ikiwiki (2.54) UNRELEASED; urgency=low * git: Put web committer name/openid/address in the git author field. The committer's email address is not used (because leaking email addresses is not liked by many users). Closes: #451023 + * git: Fix parsing of git logs with no commit messages at all. [ Simon McVittie ] * meta, inline: Support guid options, to allow forcing a particular url or -- 2.32.0.93.g670b81a890