X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-cvsimport-script;h=8f57396c2d815a4209e5b52cfb82465d100c4069;hb=d289d13625ffa568c3007c3620eaafeb521ac06d;hp=418c209c80b866ff9472c1afde182f34b6eb1449;hpb=46e63efc072bc440e4c6aad33d3157b70f5172b6;p=git.git diff --git a/git-cvsimport-script b/git-cvsimport-script index 418c209c..8f57396c 100755 --- a/git-cvsimport-script +++ b/git-cvsimport-script @@ -28,19 +28,19 @@ use POSIX qw(strftime dup2); $SIG{'PIPE'}="IGNORE"; $ENV{'TZ'}="UTC"; -our($opt_h,$opt_o,$opt_v,$opt_d,$opt_p,$opt_C); +our($opt_h,$opt_o,$opt_v,$opt_d,$opt_p,$opt_C,$opt_z,$opt_i); sub usage() { print STDERR <_line($fh); die "No input: $fn $rev\n" unless defined $res; } + close ($fh); return ($name, $res); } @@ -359,8 +360,6 @@ sub pmode($) { return $m; } -my $tmpcv = "/var/cache/cvs"; - sub getwd() { my $pwd = `pwd`; chomp $pwd; @@ -374,6 +373,7 @@ chdir($git_tree); my $last_branch = ""; my $orig_branch = ""; +my $forward_master = 0; my %branch_date; my $git_dir = $ENV{"GIT_DIR"} || ".git"; @@ -405,9 +405,25 @@ unless(-d $git_dir) { $last_branch = "master"; } $orig_branch = $last_branch; + if (-f "$git_dir/CVS2GIT_HEAD") { + die <new(); - my $pw = IO::Pipe->new(); + my $pr = IO::Pipe->new() or die "Cannot open pipe: $!\n"; + my $pw = IO::Pipe->new() or die "Cannot open pipe: $!\n"; $pid = fork(); die "Fork: $!\n" unless defined $pid; unless($pid) { @@ -658,7 +675,7 @@ while() { $state = 9; } elsif($state == 8) { $logmsg .= "$_\n"; - } elsif($state == 9 and /^\s+(\S+):(INITIAL|\d(?:\.\d+)+)->(\d(?:\.\d+)+)\s*$/) { + } elsif($state == 9 and /^\s+(\S+):(INITIAL|\d+(?:\.\d+)+)->(\d+(?:\.\d+)+)\s*$/) { # VERSION:1.96->1.96.2.1 my $init = ($2 eq "INITIAL"); my $fn = $1; @@ -666,7 +683,7 @@ while() { $fn =~ s#^/+##; my ($tmpname, $size) = $cvs->file($fn,$rev); print "".($init ? "New" : "Update")." $fn: $size bytes.\n" if $opt_v; - open my $F, '-|', "git-write-blob $tmpname" + open my $F, '-|', "git-hash-object -w $tmpname" or die "Cannot create object: $!\n"; my $sha = <$F>; chomp $sha; @@ -695,9 +712,21 @@ while() { unlink($git_index); +if (defined $orig_git_index) { + $ENV{GIT_INDEX_FILE} = $orig_git_index; +} else { + delete $ENV{GIT_INDEX_FILE}; +} + # Now switch back to the branch we were in before all of this happened if($orig_branch) { print "DONE\n" if $opt_v; + system("cp","$git_dir/refs/heads/$opt_o","$git_dir/refs/heads/master") + if $forward_master; + unless ($opt_i) { + system('git-read-tree', '-m', '-u', 'CVS2GIT_HEAD', 'HEAD'); + die "read-tree failed: $?\n" if $?; + } } else { $orig_branch = "master"; print "DONE; creating $orig_branch branch\n" if $opt_v; @@ -705,11 +734,9 @@ if($orig_branch) { unless -f "$git_dir/refs/heads/master"; unlink("$git_dir/HEAD"); symlink("refs/heads/$orig_branch","$git_dir/HEAD"); - if (defined $orig_git_index) { - $ENV{GIT_INDEX_FILE} = $orig_git_index; - } else { - delete $ENV{GIT_INDEX_FILE}; + unless ($opt_i) { + system('git checkout'); + die "checkout failed: $?\n" if $?; } - system('git checkout'); - die "checkout failed: $?\n" if $?; } +unlink("$git_dir/CVS2GIT_HEAD");