fetch: generate ref-prefixes when using a configured refspec
Teach fetch to generate ref-prefixes, to be used for server-side filtering of the ref-advertisement, based on the configured fetch refspec ('remote.<name>.fetch') when no user provided refspec exists. Signed-off-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
6373cb598e
commit
dcc73cf7ff
@ -351,7 +351,15 @@ static struct ref *get_ref_map(struct transport *transport,
|
|||||||
|
|
||||||
const struct ref *remote_refs;
|
const struct ref *remote_refs;
|
||||||
|
|
||||||
|
if (rs->nr)
|
||||||
refspec_ref_prefixes(rs, &ref_prefixes);
|
refspec_ref_prefixes(rs, &ref_prefixes);
|
||||||
|
else if (transport->remote && transport->remote->fetch.nr)
|
||||||
|
refspec_ref_prefixes(&transport->remote->fetch, &ref_prefixes);
|
||||||
|
|
||||||
|
if (ref_prefixes.argc &&
|
||||||
|
(tags == TAGS_SET || (tags == TAGS_DEFAULT && !rs->nr))) {
|
||||||
|
argv_array_push(&ref_prefixes, "refs/tags/");
|
||||||
|
}
|
||||||
|
|
||||||
remote_refs = transport_get_remote_refs(transport, &ref_prefixes);
|
remote_refs = transport_get_remote_refs(transport, &ref_prefixes);
|
||||||
|
|
||||||
|
@ -201,6 +201,20 @@ test_expect_success 'ref advertisment is filtered during fetch using protocol v2
|
|||||||
! grep "refs/tags/three" log
|
! grep "refs/tags/three" log
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'default refspec is used to filter ref when fetchcing' '
|
||||||
|
test_when_finished "rm -f log" &&
|
||||||
|
|
||||||
|
GIT_TRACE_PACKET="$(pwd)/log" git -C file_child -c protocol.version=2 \
|
||||||
|
fetch origin &&
|
||||||
|
|
||||||
|
git -C file_child log -1 --format=%s three >actual &&
|
||||||
|
git -C file_parent log -1 --format=%s three >expect &&
|
||||||
|
test_cmp expect actual &&
|
||||||
|
|
||||||
|
grep "ref-prefix refs/heads/" log &&
|
||||||
|
grep "ref-prefix refs/tags/" log
|
||||||
|
'
|
||||||
|
|
||||||
# Test protocol v2 with 'http://' transport
|
# Test protocol v2 with 'http://' transport
|
||||||
#
|
#
|
||||||
. "$TEST_DIRECTORY"/lib-httpd.sh
|
. "$TEST_DIRECTORY"/lib-httpd.sh
|
||||||
|
Loading…
x
Reference in New Issue
Block a user