diff options
author | Sven Verdoolaege <skimo@kotnet.org> | 2005-07-04 13:36:59 +0200 |
---|---|---|
committer | Sven Verdoolaege <skimo@kotnet.org> | 2005-07-04 13:36:59 +0200 |
commit | 79ee456cf222982f7ee3f003440c57b5f7cffa8b (patch) | |
tree | c27c7f8bafa48d81a4d9f7562b851681984a9c7e /git-cvsimport-script | |
parent | 2eb6d82eaa869a1faf4ba3326fd628f76f9f93a8 (diff) | |
download | git-79ee456cf222982f7ee3f003440c57b5f7cffa8b.tar.gz |
git-cvsimport-script: use private index.
Diffstat (limited to 'git-cvsimport-script')
-rwxr-xr-x | git-cvsimport-script | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/git-cvsimport-script b/git-cvsimport-script index cc684602f3..0531af30aa 100755 --- a/git-cvsimport-script +++ b/git-cvsimport-script @@ -16,6 +16,8 @@ use strict; use warnings; use Getopt::Std; +use File::Spec; +use File::Temp qw(tempfile); use File::Path qw(mkpath); use File::Basename qw(basename dirname); use Time::Local; @@ -377,6 +379,12 @@ my %branch_date; my $git_dir = $ENV{"GIT_DIR"} || ".git"; $git_dir = getwd()."/".$git_dir unless $git_dir =~ m#^/#; $ENV{"GIT_DIR"} = $git_dir; +my $orig_git_index; +$orig_git_index = $ENV{GIT_INDEX_FILE} if exists $ENV{GIT_INDEX_FILE}; +my ($git_ih, $git_index) = tempfile('gitXXXXXX', SUFFIX => '.idx', + DIR => File::Spec->tmpdir()); +close ($git_ih); +$ENV{GIT_INDEX_FILE} = $git_index; unless(-d $git_dir) { system("git-init-db"); die "Cannot init the GIT db at $git_tree: $?\n" if $?; @@ -398,6 +406,9 @@ unless(-d $git_dir) { } $orig_branch = $last_branch; + # populate index + system('git-read-tree', $last_branch); + # Get the last import timestamps opendir(D,"$git_dir/refs/heads"); while(defined(my $head = readdir(D))) { @@ -643,11 +654,6 @@ while(<CVS>) { system("git-read-tree","-m","$last_branch","$branch"); die "read-tree failed: $?\n" if $?; } - if($branch ne $last_branch) { - unlink("$git_dir/HEAD"); - symlink("refs/heads/$branch","$git_dir/HEAD"); - $last_branch = $branch; - } $state = 9; } elsif($state == 8) { $logmsg .= "$_\n"; @@ -686,26 +692,23 @@ while(<CVS>) { } &$commit() if $branch and $state != 11; +unlink($git_index); + # Now switch back to the branch we were in before all of this happened if($orig_branch) { - print "DONE; switching back to $orig_branch\n" if $opt_v; + print "DONE\n" if $opt_v; } else { $orig_branch = "master"; print "DONE; creating $orig_branch branch\n" if $opt_v; system("cp","$git_dir/refs/heads/$opt_o","$git_dir/refs/heads/master") 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}; + } + system('git checkout'); + die "checkout failed: $?\n" if $?; } - -if ($orig_branch) { - system("git-read-tree",$last_branch); - die "read-tree failed: $?\n" if $?; -} else { - system('git-read-tree', $orig_branch); - die "read-tree failed: $?\n" if $?; - system('git-checkout-cache', '-a'); - die "checkout-cache failed: $?\n" if $?; -} - -unlink("$git_dir/HEAD"); -symlink("refs/heads/$orig_branch","$git_dir/HEAD"); - |