git-mv: fix moves into a subdir from outside

git-mv needs to be run from the base directory so that
the check if a file is under revision also covers files
outside of a subdirectory. Previously, e.g. in the git repo,

  cd Documentation; git-mv ../README .

produced the error

  Error: '../README' not under version control

The test is extended for this case; it previously only tested
one direction.

Signed-off-by: Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Josef Weidendorfer 2006-03-03 17:23:32 +01:00 коммит произвёл Junio C Hamano
Родитель 8e69b31e0d
Коммит 90924d55c5
2 изменённых файлов: 24 добавлений и 2 удалений

Просмотреть файл

@ -62,9 +62,17 @@ else {
$dstDir = "";
}
my $subdir_prefix = `git rev-parse --show-prefix`;
chomp($subdir_prefix);
# run in git base directory, so that git-ls-files lists all revisioned files
chdir "$GIT_DIR/..";
# normalize paths, needed to compare against versioned files and update-index
# also, this is nicer to end-users by doing ".//a/./b/.//./c" ==> "a/b/c"
for (@srcArgs, @dstArgs) {
# prepend git prefix as we run from base directory
$_ = $subdir_prefix.$_;
s|^\./||;
s|/\./|/| while (m|/\./|);
s|//+|/|g;

Просмотреть файл

@ -11,17 +11,31 @@ test_expect_success \
git-commit -m add -a'
test_expect_success \
'moving the file' \
'moving the file out of subdirectory' \
'cd path0 && git-mv COPYING ../path1/COPYING'
# in path0 currently
test_expect_success \
'commiting the change' \
'cd .. && git-commit -m move -a'
'cd .. && git-commit -m move-out -a'
test_expect_success \
'checking the commit' \
'git-diff-tree -r -M --name-status HEAD^ HEAD | \
grep -E "^R100.+path0/COPYING.+path1/COPYING"'
test_expect_success \
'moving the file back into subdirectory' \
'cd path0 && git-mv ../path1/COPYING COPYING'
# in path0 currently
test_expect_success \
'commiting the change' \
'cd .. && git-commit -m move-in -a'
test_expect_success \
'checking the commit' \
'git-diff-tree -r -M --name-status HEAD^ HEAD | \
grep -E "^R100.+path1/COPYING.+path0/COPYING"'
test_done