|  | #!/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 | 
|  | ) && | 
|  | test_cmp 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 | 
|  | ) && | 
|  | test_cmp expected actual | 
|  | ' | 
|  |  | 
|  | test_done |