git-svn: fix log command to avoid infinite loop on long commit messages
This bug has been around since the the conversion to use the Git.pm library back in October or November. Eventually I'd like "git rev-list/log" to have the option to not truncate overly long messages. Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
13c823fb52
commit
c16d08713e
11
git-svn.perl
11
git-svn.perl
@ -3263,12 +3263,19 @@ my $l_fmt;
|
||||
sub cmt_showable {
|
||||
my ($c) = @_;
|
||||
return 1 if defined $c->{r};
|
||||
|
||||
# big commit message got truncated by the 16k pretty buffer in rev-list
|
||||
if ($c->{l} && $c->{l}->[-1] eq "...\n" &&
|
||||
$c->{a_raw} =~ /\@([a-f\d\-]+)>$/) {
|
||||
@{$c->{l}} = ();
|
||||
my @log = command(qw/cat-file commit/, $c->{c});
|
||||
shift @log while ($log[0] ne "\n");
|
||||
|
||||
# shift off the headers
|
||||
shift @log while ($log[0] ne '');
|
||||
shift @log;
|
||||
@{$c->{l}} = grep !/^git-svn-id: /, @log;
|
||||
|
||||
# TODO: make $c->{l} not have a trailing newline in the future
|
||||
@{$c->{l}} = map { "$_\n" } grep !/^git-svn-id: /, @log;
|
||||
|
||||
(undef, $c->{r}, undef) = ::extract_metadata(
|
||||
(grep(/^git-svn-id: /, @log))[-1]);
|
||||
|
Loading…
Reference in New Issue
Block a user