98e2d9d6f7
The --advertise-refs documentation in git-upload-pack added in9812f2136b
(upload-pack.c: use parse-options API, 2016-05-31) hasn't been entirely true ever since v2 support was implemented ine52449b672
(connect: request remote refs using v2, 2018-03-15). Under v2 we don't advertise the refs at all, but rather dump the capabilities header. This option has always been an obscure internal implementation detail, it wasn't even documented for git-receive-pack. Since it has exactly one user let's rename it to --http-backend-info-refs, which is more accurate and points the reader in the right direction. Let's also cross-link this from the protocol v1 and v2 documentation. I'm retaining a hidden --advertise-refs alias in case there's any external users of this, and making both options hidden to the bash completion (as with most other internal-only options). Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
162 lines
3.9 KiB
Bash
Executable File
162 lines
3.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='test functionality common to smart fetch & push'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup' '
|
|
test_commit --no-tag initial
|
|
'
|
|
|
|
test_expect_success 'git upload-pack --http-backend-info-refs and --advertise-refs are aliased' '
|
|
git upload-pack --http-backend-info-refs . >expected 2>err.expected &&
|
|
git upload-pack --advertise-refs . >actual 2>err.actual &&
|
|
test_cmp err.expected err.actual &&
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'git receive-pack --http-backend-info-refs and --advertise-refs are aliased' '
|
|
git receive-pack --http-backend-info-refs . >expected 2>err.expected &&
|
|
git receive-pack --advertise-refs . >actual 2>err.actual &&
|
|
test_cmp err.expected err.actual &&
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success 'git upload-pack --advertise-refs' '
|
|
cat >expect <<-EOF &&
|
|
$(git rev-parse HEAD) HEAD
|
|
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
|
|
0000
|
|
EOF
|
|
|
|
# We only care about GIT_PROTOCOL, not GIT_TEST_PROTOCOL_VERSION
|
|
sane_unset GIT_PROTOCOL &&
|
|
GIT_TEST_PROTOCOL_VERSION=2 \
|
|
git upload-pack --advertise-refs . >out 2>err &&
|
|
|
|
test-tool pkt-line unpack <out >actual &&
|
|
test_must_be_empty err &&
|
|
test_cmp actual expect &&
|
|
|
|
# The --advertise-refs alias works
|
|
git upload-pack --advertise-refs . >out 2>err &&
|
|
|
|
test-tool pkt-line unpack <out >actual &&
|
|
test_must_be_empty err &&
|
|
test_cmp actual expect
|
|
'
|
|
|
|
test_expect_success 'git upload-pack --advertise-refs: v0' '
|
|
# With no specified protocol
|
|
cat >expect <<-EOF &&
|
|
$(git rev-parse HEAD) HEAD
|
|
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
|
|
0000
|
|
EOF
|
|
|
|
git upload-pack --advertise-refs . >out 2>err &&
|
|
test-tool pkt-line unpack <out >actual &&
|
|
test_must_be_empty err &&
|
|
test_cmp actual expect &&
|
|
|
|
# With explicit v0
|
|
GIT_PROTOCOL=version=0 \
|
|
git upload-pack --advertise-refs . >out 2>err &&
|
|
test-tool pkt-line unpack <out >actual 2>err &&
|
|
test_must_be_empty err &&
|
|
test_cmp actual expect
|
|
|
|
'
|
|
|
|
test_expect_success 'git receive-pack --advertise-refs: v0' '
|
|
# With no specified protocol
|
|
cat >expect <<-EOF &&
|
|
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
|
|
0000
|
|
EOF
|
|
|
|
git receive-pack --advertise-refs . >out 2>err &&
|
|
test-tool pkt-line unpack <out >actual &&
|
|
test_must_be_empty err &&
|
|
test_cmp actual expect &&
|
|
|
|
# With explicit v0
|
|
GIT_PROTOCOL=version=0 \
|
|
git receive-pack --advertise-refs . >out 2>err &&
|
|
test-tool pkt-line unpack <out >actual 2>err &&
|
|
test_must_be_empty err &&
|
|
test_cmp actual expect
|
|
|
|
'
|
|
|
|
test_expect_success 'git upload-pack --advertise-refs: v1' '
|
|
# With no specified protocol
|
|
cat >expect <<-EOF &&
|
|
version 1
|
|
$(git rev-parse HEAD) HEAD
|
|
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
|
|
0000
|
|
EOF
|
|
|
|
GIT_PROTOCOL=version=1 \
|
|
git upload-pack --advertise-refs . >out &&
|
|
|
|
test-tool pkt-line unpack <out >actual 2>err &&
|
|
test_must_be_empty err &&
|
|
test_cmp actual expect
|
|
'
|
|
|
|
test_expect_success 'git receive-pack --advertise-refs: v1' '
|
|
# With no specified protocol
|
|
cat >expect <<-EOF &&
|
|
version 1
|
|
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
|
|
0000
|
|
EOF
|
|
|
|
GIT_PROTOCOL=version=1 \
|
|
git receive-pack --advertise-refs . >out &&
|
|
|
|
test-tool pkt-line unpack <out >actual 2>err &&
|
|
test_must_be_empty err &&
|
|
test_cmp actual expect
|
|
'
|
|
|
|
test_expect_success 'git upload-pack --advertise-refs: v2' '
|
|
cat >expect <<-EOF &&
|
|
version 2
|
|
agent=FAKE
|
|
ls-refs=unborn
|
|
fetch=shallow wait-for-done
|
|
server-option
|
|
object-format=$(test_oid algo)
|
|
object-info
|
|
0000
|
|
EOF
|
|
|
|
GIT_PROTOCOL=version=2 \
|
|
GIT_USER_AGENT=FAKE \
|
|
git upload-pack --advertise-refs . >out 2>err &&
|
|
|
|
test-tool pkt-line unpack <out >actual &&
|
|
test_must_be_empty err &&
|
|
test_cmp actual expect
|
|
'
|
|
|
|
test_expect_success 'git receive-pack --advertise-refs: v2' '
|
|
# There is no v2 yet for receive-pack, implicit v0
|
|
cat >expect <<-EOF &&
|
|
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
|
|
0000
|
|
EOF
|
|
|
|
GIT_PROTOCOL=version=2 \
|
|
git receive-pack --advertise-refs . >out 2>err &&
|
|
|
|
test-tool pkt-line unpack <out >actual &&
|
|
test_must_be_empty err &&
|
|
test_cmp actual expect
|
|
'
|
|
|
|
test_done
|