Skip to content

Commit

Permalink
git-mv: fix moves into a subdir from outside
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Josef Weidendorfer authored and Junio C Hamano committed Mar 3, 2006
1 parent 8e69b31 commit 90924d5
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
8 changes: 8 additions & 0 deletions git-mv.perl
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,17 @@ ()
$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;
Expand Down
18 changes: 16 additions & 2 deletions t/t7001-mv.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 90924d5

Please sign in to comment.