index 62fc14fb0de5df23c889ee6106406639906a3002..2caf0570ff7753f59b1e9709590a793a7940a2a6 100755 (executable)
--- a/contrib/git-svn/git-svn
+++ b/contrib/git-svn/git-svn
my (@parents) = @_;
$SVN_URL ||= file_to_s("$GIT_DIR/$GIT_SVN/info/url");
my @log_args = -d $SVN_WC ? ($SVN_WC) : ($SVN_URL);
- if (-d $SVN_WC && !$_revision) {
- $_revision = 'BASE:HEAD';
+ unless ($_revision) {
+ $_revision = -d $SVN_WC ? 'BASE:HEAD' : '0:HEAD';
}
- push @log_args, "-r$_revision" if $_revision;
+ push @log_args, "-r$_revision";
push @log_args, '--stop-on-copy' unless $_no_stop_copy;
eval { require XML::Simple or croak $! };
my $svn_log = $@ ? svn_log_raw(@log_args) : svn_log_xml(@log_args);
+ @$svn_log = sort { $a->{revision} <=> $b->{revision} } @$svn_log;
my $base = shift @$svn_log or croak "No base revision!\n";
my $last_commit = undef;
# if we have an empty log message, put something there:
if (@svn_log) {
- $svn_log[0]->{msg} ||= "\n";
+ $svn_log[$#svn_log]->{msg} ||= "\n";
}
next;
}
date => "$tz $Y-$m-$d $H:$M:$S",
author => $author,
msg => '' );
- unshift @svn_log, \%log_msg;
+ push @svn_log, \%log_msg;
$state = 'msg_start';
next;
}
if ($state eq 'msg_start' && /^$/) {
$state = 'msg';
} elsif ($state eq 'msg') {
- $svn_log[0]->{msg} .= $_."\n";
+ $svn_log[$#svn_log]->{msg} .= $_."\n";
}
}
close $log_fh or croak $?;