Browse Source
When a thin pack wants to send a tree object at "sub/dir", and the commit that is common between the sender and the receiver that is used as the base object has a subproject at that path, we should not try to use the data at "sub/dir" of the base tree as a tree object. It is not a tree to begin with, and more importantly, the commit object there does not have to even exist. Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
Linus Torvalds
18 years ago
committed by
Junio C Hamano
2 changed files with 54 additions and 0 deletions
@ -0,0 +1,52 @@
@@ -0,0 +1,52 @@
|
||||
#!/bin/sh |
||||
|
||||
test_description='fetching and pushing project with subproject' |
||||
|
||||
. ./test-lib.sh |
||||
|
||||
test_expect_success setup ' |
||||
test_tick && |
||||
mkdir -p sub && ( |
||||
cd sub && |
||||
git init && |
||||
>subfile && |
||||
git add subfile |
||||
git commit -m "subproject commit #1" |
||||
) && |
||||
>mainfile |
||||
git add sub mainfile && |
||||
test_tick && |
||||
git commit -m "superproject commit #1" |
||||
' |
||||
|
||||
test_expect_success clone ' |
||||
git clone file://`pwd`/.git cloned && |
||||
(git rev-parse HEAD; git ls-files -s) >expected && |
||||
( |
||||
cd cloned && |
||||
(git rev-parse HEAD; git ls-files -s) >../actual |
||||
) && |
||||
diff -u expected actual |
||||
' |
||||
|
||||
test_expect_success advance ' |
||||
echo more >mainfile && |
||||
git update-index --force-remove sub && |
||||
mv sub/.git sub/.git-disabled && |
||||
git add sub/subfile mainfile && |
||||
mv sub/.git-disabled sub/.git && |
||||
test_tick && |
||||
git commit -m "superproject commit #2" |
||||
' |
||||
|
||||
test_expect_success fetch ' |
||||
(git rev-parse HEAD; git ls-files -s) >expected && |
||||
( |
||||
cd cloned && |
||||
git pull && |
||||
(git rev-parse HEAD; git ls-files -s) >../actual |
||||
) && |
||||
diff -u expected actual |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue