| #!/bin/sh |
| |
| test_description='git read-tree in partial clones' |
| |
| TEST_NO_CREATE_REPO=1 |
| |
| GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
| export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
| |
| . ./test-lib.sh |
| |
| test_expect_success 'read-tree in partial clone prefetches in one batch' ' |
| test_when_finished "rm -rf server client trace" && |
| |
| git init server && |
| echo foo >server/one && |
| echo bar >server/two && |
| git -C server add one two && |
| git -C server commit -m "initial commit" && |
| TREE=$(git -C server rev-parse HEAD^{tree}) && |
| |
| git -C server config uploadpack.allowfilter 1 && |
| git -C server config uploadpack.allowanysha1inwant 1 && |
| git clone --bare --filter=blob:none "file://$(pwd)/server" client && |
| GIT_TRACE_PACKET="$(pwd)/trace" git -C client read-tree $TREE && |
| |
| # "done" marks the end of negotiation (once per fetch). Expect that |
| # only one fetch occurs. |
| grep "fetch> done" trace >donelines && |
| test_line_count = 1 donelines |
| ' |
| |
| test_done |