mirror of
https://github.com/git/git.git
synced 2024-05-11 21:46:09 +02:00
Fix 'git cvsexportcommit -w $cvsdir ...' when used with relative $GIT_DIR
When using the '-w $cvsdir' option to cvsexportcommit, it will chdir into $cvsdir before executing several other git commands. If $GIT_DIR is set to a relative path (e.g. '.'), the git commands executed by cvsexportcommit will naturally fail. Therefore, ensure that $GIT_DIR is absolute before the chdir to $cvsdir. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ab5a4231b0
commit
a723759485
|
@ -5,6 +5,7 @@
|
||||||
use File::Temp qw(tempdir);
|
use File::Temp qw(tempdir);
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
use File::Basename qw(basename dirname);
|
use File::Basename qw(basename dirname);
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
our ($opt_h, $opt_P, $opt_p, $opt_v, $opt_c, $opt_f, $opt_a, $opt_m, $opt_d, $opt_u, $opt_w);
|
our ($opt_h, $opt_P, $opt_p, $opt_v, $opt_c, $opt_f, $opt_a, $opt_m, $opt_d, $opt_u, $opt_w);
|
||||||
|
|
||||||
|
@ -15,17 +16,15 @@
|
||||||
die "Need at least one commit identifier!" unless @ARGV;
|
die "Need at least one commit identifier!" unless @ARGV;
|
||||||
|
|
||||||
if ($opt_w) {
|
if ($opt_w) {
|
||||||
|
# Remember where GIT_DIR is before changing to CVS checkout
|
||||||
unless ($ENV{GIT_DIR}) {
|
unless ($ENV{GIT_DIR}) {
|
||||||
# Remember where our GIT_DIR is before changing to CVS checkout
|
# No GIT_DIR set. Figure it out for ourselves
|
||||||
my $gd =`git-rev-parse --git-dir`;
|
my $gd =`git-rev-parse --git-dir`;
|
||||||
chomp($gd);
|
chomp($gd);
|
||||||
if ($gd eq '.git') {
|
|
||||||
my $wd = `pwd`;
|
|
||||||
chomp($wd);
|
|
||||||
$gd = $wd."/.git" ;
|
|
||||||
}
|
|
||||||
$ENV{GIT_DIR} = $gd;
|
$ENV{GIT_DIR} = $gd;
|
||||||
}
|
}
|
||||||
|
# Make sure GIT_DIR is absolute
|
||||||
|
$ENV{GIT_DIR} = File::Spec->rel2abs($ENV{GIT_DIR});
|
||||||
|
|
||||||
if (! -d $opt_w."/CVS" ) {
|
if (! -d $opt_w."/CVS" ) {
|
||||||
die "$opt_w is not a CVS checkout";
|
die "$opt_w is not a CVS checkout";
|
||||||
|
|
|
@ -246,7 +246,7 @@ test_expect_success \
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
test_expect_failure '-w option should work with relative GIT_DIR' '
|
test_expect_success '-w option should work with relative GIT_DIR' '
|
||||||
mkdir W &&
|
mkdir W &&
|
||||||
echo foobar >W/file1.txt &&
|
echo foobar >W/file1.txt &&
|
||||||
echo bazzle >W/file2.txt &&
|
echo bazzle >W/file2.txt &&
|
||||||
|
|
Loading…
Reference in New Issue