summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-07-17 16:53:54 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-07-17 16:53:54 -0400
commit1b318dacbda00d05566f300bb4a69cd913ce0e71 (patch)
tree1b8f4d5091eeb1e30624d2f8a03074fc3d355d02
parentf66eddccc688059fee94b4b7789318e39675d34c (diff)
git: Fix parsing of git logs with no commit messages at all.
-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