diffcore-rename: favour identical basenames
[gitweb.git] / git-svnimport.perl
index f31fcf84ed3150a1d53676cd1e01ba276b122cba..b73d6494d80fe5ee19e1d95971e2e4e64e980dea 100755 (executable)
@@ -148,6 +148,7 @@ sub file {
        print "... $rev $path ...\n" if $opt_v;
        my (undef, $properties);
        my $pool = SVN::Pool->new();
+       $path =~ s#^/*##;
        eval { (undef, $properties)
                   = $self->{'svn'}->get_file($path,$rev,$fh,$pool); };
        $pool->clear;
@@ -183,6 +184,7 @@ sub ignore {
        my($self,$path,$rev) = @_;
 
        print "... $rev $path ...\n" if $opt_v;
+       $path =~ s#^/*##;
        my (undef,undef,$properties)
            = $self->{'svn'}->get_dir($path,$rev,undef);
        if (exists $properties->{'svn:ignore'}) {
@@ -199,6 +201,7 @@ sub ignore {
 
 sub dir_list {
        my($self,$path,$rev) = @_;
+       $path =~ s#^/*##;
        my ($dirents,undef,$properties)
            = $self->{'svn'}->get_dir($path,$rev,undef);
        return $dirents;
@@ -282,7 +285,7 @@ ($$)
 my $last_branch;
 my $current_rev = $opt_s || 1;
 unless(-d $git_dir) {
-       system("git-init-db");
+       system("git-init");
        die "Cannot init the GIT db at $git_tree: $?\n" if $?;
        system("git-read-tree");
        die "Cannot init an empty tree: $?\n" if $?;
@@ -356,6 +359,7 @@ ($$)
 sub node_kind($$) {
        my ($svnpath, $revision) = @_;
        my $pool=SVN::Pool->new;
+       $svnpath =~ s#^/*##;
        my $kind = $svn->{'svn'}->check_path($svnpath,$revision,$pool);
        $pool->clear;
        return $kind;
@@ -538,7 +542,7 @@ ($$$$$$$$)
        if ($node_kind eq $SVN::Node::dir) {
                $srcpath =~ s#/*$#/#;
        }
-       
+
        my $pid = open my $f,'-|';
        die $! unless defined $pid;
        if (!$pid) {
@@ -556,7 +560,7 @@ ($$$$$$$$)
                } else {
                        $p = $path;
                }
-               push(@$new,[$mode,$sha1,$p]);   
+               push(@$new,[$mode,$sha1,$p]);
        }
        close($f) or
                print STDERR "$newrev:$newbranch: could not list files in $oldpath \@ $rev\n";
@@ -863,34 +867,14 @@ sub commit {
                        or die "Cannot write branch $dest for update: $!\n";
        }
 
-       if($tag) {
-               my($in, $out) = ('','');
+       if ($tag) {
                $last_rev = "-" if %$changed_paths;
                # 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".
-                   "type commit\n".
-                   "tag $dest\n".
-                   "tagger $committer_name <$committer_email> 0 +0000\n") and
-               close($out)
-                   or die "Cannot create tag object $dest: $!\n";
-
-               my $tagobj = <$in>;
-               chomp $tagobj;
-
-               if ( !close($in) or waitpid($pid, 0) != $pid or
-                               $? != 0 or $tagobj !~ /^[0123456789abcdef]{40}$/ ) {
-                       die "Cannot create tag object $dest: $!\n";
-               }
 
-               open(C,">$git_dir/refs/tags/$dest") and
-               print C ("$tagobj\n") and
-               close(C)
-                       or die "Cannot create tag $branch: $!\n";
+               system('git-tag', $dest, $cid) == 0
+                       or die "Cannot create tag $dest: $!\n";
 
                print "Created tag '$dest' on '$branch'\n" if $opt_v;
        }
@@ -939,10 +923,10 @@ sub commit_all {
 print "Processing from $current_rev to $opt_l ...\n" if $opt_v;
 
 my $from_rev;
-my $to_rev = $current_rev;
+my $to_rev = $current_rev - 1;
 
 while ($to_rev < $opt_l) {
-       $from_rev = $to_rev;
+       $from_rev = $to_rev + 1;
        $to_rev = $from_rev + $repack_after;
        $to_rev = $opt_l if $opt_l < $to_rev;
        print "Fetching from $from_rev to $to_rev ...\n" if $opt_v;