Skip to content

Commit

Permalink
git-svn: fix "Malformed network data" with svn:// servers
Browse files Browse the repository at this point in the history
We have a workaround for the reparent function not working
correctly on the SVN native protocol servers.  This workaround
opens a new connection (SVN::Ra object) to the new
URL/directory.

Since libsvn appears limited to only supporting one connection
at a time, this workaround invalidates the Git::SVN::Ra object
that is $self inside gs_fetch_loop_common().  So we need to
restart that connection once all the fetching is done for each
loop iteration to be able to run get_log() successfully.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Eric Wong authored and Junio C Hamano committed Sep 8, 2007
1 parent ee834cf commit a51cdb0
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion git-svn.perl
Original file line number Diff line number Diff line change
Expand Up @@ -3013,7 +3013,7 @@ package Git::SVN::Ra;
use vars qw/@ISA $config_dir $_log_window_size/;
use strict;
use warnings;
my ($can_do_switch, %ignored_err, $RA);
my ($ra_invalid, $can_do_switch, %ignored_err, $RA);

BEGIN {
# enforce temporary pool usage for some simple functions
Expand Down Expand Up @@ -3174,7 +3174,11 @@ sub gs_do_switch {
$self->{url} = $full_url;
$reparented = 1;
} else {
$_[0] = undef;
$self = undef;
$RA = undef;
$ra = Git::SVN::Ra->new($full_url);
$ra_invalid = 1;
}
}
$ra ||= $self;
Expand Down Expand Up @@ -3234,6 +3238,7 @@ sub gs_fetch_loop_common {
my $inc = $_log_window_size;
my ($min, $max) = ($base, $head < $base + $inc ? $head : $base + $inc);
my $longest_path = longest_common_path($gsv, $globs);
my $ra_url = $self->{url};
while (1) {
my %revs;
my $err;
Expand Down Expand Up @@ -3295,6 +3300,13 @@ sub gs_fetch_loop_common {
"$g->{t}-maxRev";
Git::SVN::tmp_config($k, $r);
}
if ($ra_invalid) {
$_[0] = undef;
$self = undef;
$RA = undef;
$self = Git::SVN::Ra->new($ra_url);
$ra_invalid = undef;
}
}
# pre-fill the .rev_db since it'll eventually get filled in
# with '0' x40 if something new gets committed
Expand Down

0 comments on commit a51cdb0

Please sign in to comment.