cvsimport: fix relative argument filenames

One of the first things that cvsimport does is chdir to the
newly created git repo. This means that any filenames given
to us on the command line will be looked up relative to the
git repo directory. This is probably not what the user
expects, so let's remember and prepend the original
directory for relative filenames.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2009-10-19 02:49:55 -04:00 committed by Junio C Hamano
parent b142da2a5d
commit f6fdbb6804

View File

@ -579,10 +579,21 @@ sub get_headref ($) {
return $r;
}
my $user_filename_prepend = '';
sub munge_user_filename {
my $name = shift;
return File::Spec->file_name_is_absolute($name) ?
$name :
$user_filename_prepend . $name;
}
-d $git_tree
or mkdir($git_tree,0777)
or die "Could not create $git_tree: $!";
chdir($git_tree);
if ($git_tree ne '.') {
$user_filename_prepend = getwd() . '/';
chdir($git_tree);
}
my $last_branch = "";
my $orig_branch = "";
@ -644,7 +655,7 @@ unless (-d $git_dir) {
-f "$git_dir/cvs-authors" and
read_author_info("$git_dir/cvs-authors");
if ($opt_A) {
read_author_info($opt_A);
read_author_info(munge_user_filename($opt_A));
write_author_info("$git_dir/cvs-authors");
}
@ -679,7 +690,7 @@ unless ($opt_P) {
$? == 0 or die "git-cvsimport: fatal: cvsps reported error\n";
close $cvspsfh;
} else {
$cvspsfile = $opt_P;
$cvspsfile = munge_user_filename($opt_P);
}
open(CVS, "<$cvspsfile") or die $!;