summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Rcs/git.pm14
-rw-r--r--debian/changelog1
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