upload-pack: teach deepen-relative in protocol v2
Commit 685fbd3291
("fetch-pack: perform a fetch using v2", 2018-03-15)
attempted to teach Git deepen-relative in protocol v2 (among other
things), but it didn't work:
(1) fetch-pack.c needs to emit "deepen-relative".
(2) upload-pack.c needs to ensure that the correct deepen_relative
variable is passed to deepen() (there are two - the static variable
and the one in struct upload_pack_data).
(3) Before deepen() computes the list of reachable shallows, it first
needs to mark all "our" refs as OUR_REF. v2 currently does not do
this, because unlike v0, it is not needed otherwise.
Fix all this and include a test demonstrating that it works now. For
(2), the static variable deepen_relative is also eliminated, removing a
source of confusion.
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Reviewed-by: Josh Steadmon <steadmon@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
bd0b42aed3
commit
5056cf4a62
@ -489,6 +489,35 @@ test_expect_success 'ensure that multiple fetches in same process from a shallow
|
||||
grep "fetch< version 2" trace
|
||||
'
|
||||
|
||||
test_expect_success 'deepen-relative' '
|
||||
rm -rf server client trace &&
|
||||
|
||||
test_create_repo server &&
|
||||
test_commit -C server one &&
|
||||
test_commit -C server two &&
|
||||
test_commit -C server three &&
|
||||
git clone --depth 1 "file://$(pwd)/server" client &&
|
||||
test_commit -C server four &&
|
||||
|
||||
# Sanity check that only "three" is downloaded
|
||||
git -C client log --pretty=tformat:%s master >actual &&
|
||||
echo three >expected &&
|
||||
test_cmp expected actual &&
|
||||
|
||||
GIT_TRACE_PACKET="$(pwd)/trace" git -C client -c protocol.version=2 \
|
||||
fetch --deepen=1 origin &&
|
||||
# Ensure that protocol v2 is used
|
||||
grep "fetch< version 2" trace &&
|
||||
|
||||
git -C client log --pretty=tformat:%s origin/master >actual &&
|
||||
cat >expected <<-\EOF &&
|
||||
four
|
||||
three
|
||||
two
|
||||
EOF
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
# Test protocol v2 with 'http://' transport
|
||||
#
|
||||
. "$TEST_DIRECTORY"/lib-httpd.sh
|
||||
|
Reference in New Issue
Block a user