Commits

Junio C Hamano  committed 4fddf57

git-mv: invalidate the removed path properly in cache-tree

The command updated the cache without invalidating the cache
tree entries while removing an existing entry.

Signed-off-by: Junio C Hamano <junkio@cox.net>

  • Participants
  • Parent commits 82ca505

Comments (0)

Files changed (2)

File builtin-mv.c

 		for (i = 0; i < deleted.nr; i++) {
 			const char *path = deleted.items[i].path;
 			remove_file_from_cache(path);
+			cache_tree_invalidate_path(active_cache_tree, path);
 		}
 
 		if (active_cache_changed) {

File t/t7001-mv.sh

     'move into "."' \
     'git-mv path1/path2/ .'
 
+test_expect_success "Michael Cassar's test case" '
+	rm -fr .git papers partA &&
+	git init-db &&
+	mkdir -p papers/unsorted papers/all-papers partA &&
+	echo a > papers/unsorted/Thesis.pdf &&
+	echo b > partA/outline.txt &&
+	echo c > papers/unsorted/_another &&
+	git add papers partA &&
+	T1=`git write-tree` &&
+
+	git mv papers/unsorted/Thesis.pdf papers/all-papers/moo-blah.pdf &&
+
+	T=`git write-tree` &&
+	git ls-tree -r $T | grep partA/outline.txt || {
+		git ls-tree -r $T
+		(exit 1)
+	}
+'
+
 test_done