Merge branch 'maint'
* maint: git-svn: avoid fetching files twice in the same revision
This commit is contained in:
10
git-svn.perl
10
git-svn.perl
@ -2982,7 +2982,7 @@ sub libsvn_fetch_delta {
|
|||||||
sub libsvn_fetch_full {
|
sub libsvn_fetch_full {
|
||||||
my ($last_commit, $paths, $rev, $author, $date, $msg) = @_;
|
my ($last_commit, $paths, $rev, $author, $date, $msg) = @_;
|
||||||
open my $gui, '| git-update-index -z --index-info' or croak $!;
|
open my $gui, '| git-update-index -z --index-info' or croak $!;
|
||||||
my @amr;
|
my %amr;
|
||||||
my $p = $SVN->{svn_path};
|
my $p = $SVN->{svn_path};
|
||||||
foreach my $f (keys %$paths) {
|
foreach my $f (keys %$paths) {
|
||||||
my $m = $paths->{$f}->action();
|
my $m = $paths->{$f}->action();
|
||||||
@ -3001,7 +3001,7 @@ sub libsvn_fetch_full {
|
|||||||
my $t = $SVN->check_path($f, $rev, $pool);
|
my $t = $SVN->check_path($f, $rev, $pool);
|
||||||
if ($t == $SVN::Node::file) {
|
if ($t == $SVN::Node::file) {
|
||||||
if ($m =~ /^[AMR]$/) {
|
if ($m =~ /^[AMR]$/) {
|
||||||
push @amr, [ $m, $f ];
|
$amr{$f} = $m;
|
||||||
} else {
|
} else {
|
||||||
die "Unrecognized action: $m, ($f r$rev)\n";
|
die "Unrecognized action: $m, ($f r$rev)\n";
|
||||||
}
|
}
|
||||||
@ -3009,13 +3009,13 @@ sub libsvn_fetch_full {
|
|||||||
my @traversed = ();
|
my @traversed = ();
|
||||||
libsvn_traverse($gui, '', $f, $rev, \@traversed);
|
libsvn_traverse($gui, '', $f, $rev, \@traversed);
|
||||||
foreach (@traversed) {
|
foreach (@traversed) {
|
||||||
push @amr, [ $m, $_ ]
|
$amr{$_} = $m;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$pool->clear;
|
$pool->clear;
|
||||||
}
|
}
|
||||||
foreach (@amr) {
|
foreach (keys %amr) {
|
||||||
libsvn_get_file($gui, $_->[1], $rev, $_->[0]);
|
libsvn_get_file($gui, $_, $rev, $amr{$_});
|
||||||
}
|
}
|
||||||
close $gui or croak $?;
|
close $gui or croak $?;
|
||||||
return libsvn_log_entry($rev, $author, $date, $msg, [$last_commit]);
|
return libsvn_log_entry($rev, $author, $date, $msg, [$last_commit]);
|
||||||
|
Reference in New Issue
Block a user