Fix fd leak in http-fetch
[git.git] / git-svnimport.perl
index ae82a7c..cb9afb9 100755 (executable)
@@ -25,7 +25,7 @@ use IPC::Open2;
 use SVN::Core;
 use SVN::Ra;
 
-die "Need CVN:Core 1.2.1 or better" if $SVN::Core::VERSION lt "1.2.1";
+die "Need SVN:Core 1.2.1 or better" if $SVN::Core::VERSION lt "1.2.1";
 
 $SIG{'PIPE'}="IGNORE";
 $ENV{'TZ'}="UTC";
@@ -34,7 +34,7 @@ our($opt_h,$opt_o,$opt_v,$opt_u,$opt_C,$opt_i,$opt_m,$opt_M,$opt_t,$opt_T,$opt_b
 
 sub usage() {
        print STDERR <<END;
-Usage: ${\basename $0}     # fetch/update GIT from CVS
+Usage: ${\basename $0}     # fetch/update GIT from SVN
        [-o branch-for-HEAD] [-h] [-v] [-l max_num_changes]
        [-C GIT_repository] [-t tagname] [-T trunkname] [-b branchname]
        [-d|-D] [-i] [-u] [-s start_chg] [-m] [-M regex] [SVN_URL]
@@ -53,7 +53,6 @@ my $branch_name = $opt_b || "branches";
 
 $opt_o ||= "origin";
 $opt_s ||= 1;
-$opt_l = 100 unless defined $opt_l;
 my $git_tree = $opt_C;
 $git_tree ||= ".";
 
@@ -648,6 +647,10 @@ sub commit {
                die "Error running git-commit-tree: $?\n" if $?;
        }
 
+       if (not defined $cid) {
+               $cid = $branches{"/"}{"LAST"};
+       }
+
        if(not defined $dest) {
                print "... no known parent\n" if $opt_v;
        } elsif(not $tag) {
@@ -664,6 +667,7 @@ sub commit {
                # the tag was 'complex', i.e. did not refer to a "real" revision
 
                $dest =~ tr/_/\./ if $opt_u;
+               $branch = $dest;
 
                my $pid = open2($in, $out, 'git-mktag');
                print $out ("object $cid\n".
@@ -722,15 +726,16 @@ sub commit_all {
 }
 
 while(++$current_rev <= $svn->{'maxrev'}) {
+       if (defined $opt_l) {
+               $opt_l--;
+               if ($opt_l < 0) {
+                       last;
+               }
+       }
        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";
-               print STDERR "Please repeat this command; it will continue safely\n";
-               last;
-       }
 }