[PATCH] git-svn: fix "Malformed network data" with svn:// servers
- From
- Eric Wong <normalperson@yhbt.net>
- Date
- Sep 7, 2007, 07:34 UTC
- Message-ID
- <20070907073424.GA16468@mayonaise>
- In-Reply-To
- <20070807134220.23420.qmail@c96e4a6cce1e57.315fe32.mid.smarden.org>
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> ---
Gerrit Pape <pape@smarden.org> wrote: > On Wed, Jul 04, 2007 at 02:07:42PM -0700, Eric Wong wrote: > > Although this fixes blocking reads, this does *not* fix the > > "Malformed network data" issue, which has been around for a > > while... > > > > I'll try to find time to fix the "Malformed network data" bug > > in a few days time, but it's not fatal (just restart git-svn, > > this error happens at a point where it's not possible to have > > a corrupted import). > > Hi, this still is a problem we face on Debian with 1.5.3-rc3 > http://bugs.debian.org/436142 > http://bugs.debian.org/430091 > > I'm sorry, I didn't manage to provide a patch.
Sorry for the latency again.
git-svn.perl | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl index d3c8cd0..7df4098 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -3175,6 +3175,7 @@ sub gs_do_switch { $reparented = 1; } else { $ra = Git::SVN::Ra->new($full_url); + $self->{-invalid} = 1; } } $ra ||= $self; @@ -3310,6 +3311,11 @@ sub gs_fetch_loop_common { $min = $max + 1; $max += $inc; $max = $head if ($max > $head); + if ($self->{-invalid}) { + my $ra_url = $self->{url}; + $self = undef; + $self = Git::SVN::Ra->new($ra_url); + } } }
-- Eric Wong