Browse Source

git-cvsimport-script: move working directory forward

If HEAD happened to point to a cvs branch, move the
working directory forward to the tip of the branch.
Additionally, if master and "origin" are equal,
move master forward to new origin first.
maint
Sven Verdoolaege 20 years ago
parent
commit
210569f9ae
  1. 32
      git-cvsimport-script

32
git-cvsimport-script

@ -372,6 +372,7 @@ chdir($git_tree); @@ -372,6 +372,7 @@ chdir($git_tree);

my $last_branch = "";
my $orig_branch = "";
my $forward_master = 0;
my %branch_date;

my $git_dir = $ENV{"GIT_DIR"} || ".git";
@ -403,6 +404,21 @@ unless(-d $git_dir) { @@ -403,6 +404,21 @@ unless(-d $git_dir) {
$last_branch = "master";
}
$orig_branch = $last_branch;
if (-f "$git_dir/CVS2GIT_HEAD") {
die <<EOM;
CVS2GIT_HEAD exists.
Make sure your working directory corresponds to HEAD and remove CVS2GIT_HEAD.
You may need to run

git-read-tree -m -u CVS2GIT_HEAD HEAD
EOM
}
system('cp', "$git_dir/HEAD", "$git_dir/CVS2GIT_HEAD");

$forward_master =
$opt_o ne 'master' && -f "$git_dir/refs/heads/master" &&
system('cmp', '-s', "$git_dir/refs/heads/master",
"$git_dir/refs/heads/$opt_o") == 0;

# populate index
system('git-read-tree', $last_branch);
@ -695,9 +711,19 @@ while(<CVS>) { @@ -695,9 +711,19 @@ while(<CVS>) {

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;
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 +731,7 @@ if($orig_branch) { @@ -705,11 +731,7 @@ 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};
}
system('git checkout');
die "checkout failed: $?\n" if $?;
}
unlink("$git_dir/CVS2GIT_HEAD");

Loading…
Cancel
Save