upload-pack: support hidden refs with protocol v2
authorJeff King <peff@peff.net>
Tue, 18 Dec 2018 12:47:50 +0000 (07:47 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 10 Jan 2019 19:15:37 +0000 (11:15 -0800)
commite20b4192a3783f5e2241cce5a439933941836a99
treef0f75c6a63279124cfdd6d14099cc591b6e0e061
parent98cdfbb84ad2ed6a2eb43dafa357a70a4b0a0fad
upload-pack: support hidden refs with protocol v2

In the v2 protocol, upload-pack's advertisement has been moved to the
"ls-refs" command. That command does not respect hidden-ref config (like
transfer.hiderefs) at all, and advertises everything.

While there are some features that are not supported in v2 (e.g., v2
always allows fetching any sha1 without respect to advertisements), the
lack of this feature is not documented and is likely just a bug. Let's
make it work, as otherwise upgrading a server to a v2-capable git will
start exposing these refs that the repository admin has asked to remain
hidden.

Note that we assume we're operating on behalf of a fetch here, since
that's the only thing implemented in v2 at this point. See the in-code
comment. We'll have to figure out how this works when the v2 push
protocol is designed (both here in ls-refs, but also rejecting updates
to hidden refs).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
ls-refs.c
t/t5512-ls-remote.sh