X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/fc4c1b7ec819cf8e73f2efba05606e575eaf47a5..d36361b01015da0338d3c0dc20625b5121ed94b2:/IkiWiki/Rcs/git.pm diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm index 9f65e86aa..425536f62 100644 --- a/IkiWiki/Rcs/git.pm +++ b/IkiWiki/Rcs/git.pm @@ -1,13 +1,13 @@ #!/usr/bin/perl +package IkiWiki; + use warnings; use strict; use IkiWiki; use Encode; use open qw{:utf8 :std}; -package IkiWiki; - my $sha1_pattern = qr/[0-9a-fA-F]{40}/; # pattern to validate Git sha1sums my $dummy_commit_msg = 'dummy commit'; # message to skip in recent changes @@ -279,7 +279,8 @@ sub git_sha1 (;$) { #{{{ my $file = shift || q{--}; # Ignore error since a non-existing file might be given. - my ($sha1) = run_or_non('git', 'rev-list', '--max-count=1', 'HEAD', $file); + my ($sha1) = run_or_non('git', 'rev-list', '--max-count=1', 'HEAD', + '--', $file); if ($sha1) { ($sha1) = $sha1 =~ m/($sha1_pattern)/; # sha1 is untainted now } else { debug("Empty sha1sum for '$file'.") } @@ -382,7 +383,10 @@ sub rcs_recentchanges ($) { #{{{ diffurl => $diffurl, }; } - push @messages, { line => $_ } foreach @{$ci->{'comment'}}; + + push @messages, { line => $_ } foreach grep { + ! m/^ *(signed[ \-]off[ \-]by[ :]|acked[ \-]by[ :]|cc[ :])/i + } @{$ci->{'comment'}}; my ($user, $type) = (q{}, "web"); @@ -414,7 +418,18 @@ sub rcs_recentchanges ($) { #{{{ sub rcs_diff ($) { #{{{ my $rev=shift; my ($sha1) = $rev =~ /^($sha1_pattern)$/; # untaint - return join("\n", run_or_non("git", "diff", "$sha1^", $sha1)); + my @lines; + foreach my $line (run_or_non("git", "show", $sha1)) { + if (@lines || $line=~/^diff --git/) { + push @lines, $line."\n"; + } + } + if (wantarray) { + return @lines; + } + else { + return join("", @lines); + } } #}}} sub rcs_getctime ($) { #{{{