Merge branch 'jt/avoid-ls-refs'
Over some transports, fetching objects with an exact commit object name can be done without first seeing the ref advertisements. The code has been optimized to exploit this. * jt/avoid-ls-refs: fetch: do not list refs if fetching only hashes transport: list refs before fetch if necessary transport: do not list refs if possible transport: allow skipping of ref listing
This commit is contained in:
@ -79,6 +79,19 @@ test_expect_success 'fetch with git:// using protocol v2' '
|
||||
grep "fetch< version 2" log
|
||||
'
|
||||
|
||||
test_expect_success 'fetch by hash without tag following with protocol v2 does not list refs' '
|
||||
test_when_finished "rm -f log" &&
|
||||
|
||||
test_commit -C "$daemon_parent" two_a &&
|
||||
git -C "$daemon_parent" rev-parse two_a >two_a_hash &&
|
||||
|
||||
GIT_TRACE_PACKET="$(pwd)/log" git -C daemon_child -c protocol.version=2 \
|
||||
fetch --no-tags origin $(cat two_a_hash) &&
|
||||
|
||||
grep "fetch< version 2" log &&
|
||||
! grep "fetch> command=ls-refs" log
|
||||
'
|
||||
|
||||
test_expect_success 'pull with git:// using protocol v2' '
|
||||
test_when_finished "rm -f log" &&
|
||||
|
||||
@ -286,6 +299,10 @@ test_expect_success 'dynamically fetch missing object' '
|
||||
grep "version 2" trace
|
||||
'
|
||||
|
||||
test_expect_success 'when dynamically fetching missing object, do not list refs' '
|
||||
! grep "git> command=ls-refs" trace
|
||||
'
|
||||
|
||||
test_expect_success 'partial fetch' '
|
||||
rm -rf client "$(pwd)/trace" &&
|
||||
git init client &&
|
||||
|
Reference in New Issue
Block a user