Use svn pools to solve the memory leak problem.
authorYaacov Akiba Slama <ya@slamail.org>
Wed, 2 Nov 2005 21:51:57 +0000 (23:51 +0200)
committerJunio C Hamano <junkio@cox.net>
Tue, 8 Nov 2005 09:24:47 +0000 (01:24 -0800)
Signed-off-by: Yaacov Akiba Slama <ya@slamail.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
git-svnimport.perl

index 45b6a19..5bf9ef2 100755 (executable)
@@ -112,7 +112,9 @@ sub file {
                    DIR => File::Spec->tmpdir(), UNLINK => 1);
 
        print "... $rev $path ...\n" if $opt_v;
-       eval { $self->{'svn'}->get_file($path,$rev,$fh); };
+       my $pool = SVN::Pool->new();
+       eval { $self->{'svn'}->get_file($path,$rev,$fh,$pool); };
+       $pool->clear;
        if($@) {
                return undef if $@ =~ /Attempted to get checksum/;
                die $@;
@@ -674,7 +676,9 @@ sub commit_all {
 }
 
 while(++$current_rev <= $svn->{'maxrev'}) {
-       $svn->{'svn'}->get_log("/",$current_rev,$current_rev,$current_rev,1,1,\&_commit_all,"");
+       my $pool=SVN::Pool->new;
+       $svn->{'svn'}->get_log("/",$current_rev,$current_rev,1,1,1,\&_commit_all,$pool);
+       $pool->clear;
        commit_all();
        if($opt_l and not --$opt_l) {
                print STDERR "Stopping, because there is a memory leak (in the SVN library).\n";