From: Eric Wong Date: Fri, 19 Jan 2007 02:22:18 +0000 (-0800) Subject: git-svn: reuse open SVN::Ra connections by URL X-Git-Tag: v1.5.1-rc1~236 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=f6f0987646069bff3a7674aca257fd84f939d960;p=git.git git-svn: reuse open SVN::Ra connections by URL Note: this can cause problems with Perl's reference counting GC, so I'm disabling Git::SVN::Ra::DESTROY. If we notice more problems down the line, we can disable this enhancement. Signed-off-by: Eric Wong --- diff --git a/git-svn.perl b/git-svn.perl index b5a4cb05a..4084e0657 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -2015,6 +2015,7 @@ use vars qw/@ISA $config_dir/; use strict; use warnings; my ($can_do_switch); +my %RA; BEGIN { # enforce temporary pool usage for some simple functions @@ -2033,6 +2034,9 @@ BEGIN { sub new { my ($class, $url) = @_; + $url =~ s!/+$!!; + return $RA{$url} if $RA{$url}; + SVN::_Core::svn_config_ensure($config_dir, undef); my ($baton, $callbacks) = SVN::Core::auth_open_helper([ SVN::Client::get_simple_provider(), @@ -2057,13 +2061,11 @@ sub new { $self->{svn_path} = $url; $self->{repos_root} = $self->get_repos_root; $self->{svn_path} =~ s#^\Q$self->{repos_root}\E/*##; - bless $self, $class; + $RA{$url} = bless $self, $class; } sub DESTROY { - my $self = shift; - $self->{pool}->clear if $self->{pool}; - $self->SUPER::DESTROY(@_); + # do not call the real DESTROY since we store ourselves in %RA } sub dup {