git-svn: fix blocking with svn:// servers after do_switch
authorEric Wong <normalperson@yhbt.net>
Wed, 4 Jul 2007 21:07:42 +0000 (14:07 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 5 Jul 2007 04:06:07 +0000 (21:06 -0700)
We now explicitly disconnect before starting new SVN::Ra
connections. SVN::Ra objects will automatically be disconnected
from the server on DESTROY.

SVN servers seem to have problems accepting multiple connections
from one client, and the SVN library has trouble being connected
to multiple servers at once. This appears to cause opening the
second connection to block, and cause git-svn to be unusable
after using the do_switch() function.

git-svn opens another connection because a workaround is
necesary for the buggy reparent function handling on certain
versions of svn:// and svn+ssh:// servers. Instead of using the
reparent function (analogous to chdir), it will reopen a new
connection to a different URL on the SVN server.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-svn.perl
index 51979f9639d2da8a7b9a38527051ccf62ebcd7b6..b3dffccf38a52714f000f1f90b6c32ecdeb43f82 100755 (executable)
@@ -3002,6 +3002,7 @@ sub new {
              \&Git::SVN::Prompt::username, 2),
          ]);
        my $config = SVN::Core::config_get_config($config_dir);
+       $RA = undef;
        my $self = SVN::Ra->new(url => $url, auth => $baton,
                              config => $config,
                              pool => SVN::Pool->new,