summaryrefslogtreecommitdiff
path: root/t/t1001-read-tree-m-2way.sh
diff options
context:
space:
mode:
authorClemens Buchacher <drizzd@aon.at>2009-01-01 21:54:32 +0100
committerJunio C Hamano <gitster@pobox.com>2009-01-05 12:46:35 -0800
commit837e5fe95d9d6e597b748d338e45cca231f558fa (patch)
tree63509e66387ffc9a7a743ff69133fe17285ecefc /t/t1001-read-tree-m-2way.sh
parent6b9315d5a14b4d1389cff347fcfcb86624bbf645 (diff)
downloadgit-837e5fe95d9d6e597b748d338e45cca231f558fa.tar.gz
unpack-trees: fix path search bug in verify_absent
Commit 0cf73755 (unpack-trees.c: assume submodules are clean during check-out) changed an argument to verify_absent from 'path' to 'ce', which is however shadowed by a local variable of the same name. The bug triggers if verify_absent is used on a tree entry, for which the index contains one or more subsequent directories of the same length. The affected subdirectories are removed from the index. The testcase included in this commit bisects to 55218834 (checkout: do not lose staged removal), which reveals the bug in this case, but is otherwise unrelated. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t1001-read-tree-m-2way.sh')
-rwxr-xr-xt/t1001-read-tree-m-2way.sh27
1 files changed, 27 insertions, 0 deletions
diff --git a/t/t1001-read-tree-m-2way.sh b/t/t1001-read-tree-m-2way.sh
index 7f6ab31c36..271bc4e17f 100755
--- a/t/t1001-read-tree-m-2way.sh
+++ b/t/t1001-read-tree-m-2way.sh
@@ -365,4 +365,31 @@ test_expect_success \
git ls-files --stage &&
test -f a/b'
+test_expect_success \
+ 'a/b vs a, plus c/d case setup.' \
+ 'rm -f .git/index &&
+ rm -fr a &&
+ : >a &&
+ mkdir c &&
+ : >c/d &&
+ git update-index --add a c/d &&
+ treeM=`git write-tree` &&
+ echo treeM $treeM &&
+ git ls-tree $treeM &&
+ git ls-files --stage >treeM.out &&
+
+ rm -f a &&
+ mkdir a
+ : >a/b &&
+ git update-index --add --remove a a/b &&
+ treeH=`git write-tree` &&
+ echo treeH $treeH &&
+ git ls-tree $treeH'
+
+test_expect_success \
+ 'a/b vs a, plus c/d case test.' \
+ 'git read-tree -u -m "$treeH" "$treeM" &&
+ git ls-files --stage | tee >treeMcheck.out &&
+ test_cmp treeM.out treeMcheck.out'
+
test_done