fetch: send "refs/tags/" prefix upon CLI refspecs
authorJonathan Tan <jonathantanmy@google.com>
Tue, 5 Jun 2018 21:40:36 +0000 (14:40 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 24 Jul 2018 15:54:17 +0000 (08:54 -0700)
commit2b554353a5f0463dec44b827e2d1423b698d06d3
treed5eeed2bdaf171b6c83dfbf2dc5603456bfc5686
parent15cfc985e0e0ec6976637d66dd341743cc958373
fetch: send "refs/tags/" prefix upon CLI refspecs

When performing tag following, in addition to using the server's
"include-tag" capability to send tag objects (and emulating it if the
server does not support that capability), "git fetch" relies upon the
presence of refs/tags/* entries in the initial ref advertisement to
locally create refs pointing to the aforementioned tag objects. When
using protocol v2, refs/tags/* entries in the initial ref advertisement
may be suppressed by a ref-prefix argument, leading to the tag object
being downloaded, but the ref not being created.

Commit dcc73cf7ff ("fetch: generate ref-prefixes when using a configured
refspec", 2018-05-18) ensured that "refs/tags/" is always sent as a ref
prefix when "git fetch" is invoked with no refspecs, but not when "git
fetch" is invoked with refspecs. Extend that functionality to make it
work in both situations.

This also necessitates a change another test which tested ref
advertisement filtering using tag refs - since tag refs are sent by
default now, the test has been switched to using branch refs instead.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fetch.c
t/t5702-protocol-v2.sh