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.
This commit is contained in:
parent
fc6e714c83
commit
210569f9ae
@ -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) {
|
||||
$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>) {
|
||||
|
||||
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) {
|
||||
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…
Reference in New Issue
Block a user