ls-remote: pass heads/tags prefixes to transport
Unlike its arbitrary text patterns, the --heads and --tags options to ls-remote are true prefixes. We can pass this information to the transport code. If the v2 protocol is in use, that will reduce the size of the ref advertisement. Note that the test added here succeeds both before and after the patch. This is an optimization, not a bug-fix; it's just making sure we didn't break anything. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
631f0f8c4b
commit
6a139cdd74
@ -92,6 +92,11 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & REF_TAGS)
|
||||
argv_array_push(&ref_prefixes, "refs/tags/");
|
||||
if (flags & REF_HEADS)
|
||||
argv_array_push(&ref_prefixes, "refs/heads/");
|
||||
|
||||
remote = remote_get(dest);
|
||||
if (!remote) {
|
||||
if (dest)
|
||||
|
@ -313,4 +313,13 @@ test_expect_success 'ls-remote patterns work with all protocol versions' '
|
||||
test_cmp expect actual.v2
|
||||
'
|
||||
|
||||
test_expect_success 'ls-remote prefixes work with all protocol versions' '
|
||||
git for-each-ref --format="%(objectname) %(refname)" \
|
||||
refs/heads/ refs/tags/ >expect &&
|
||||
git -c protocol.version=1 ls-remote --heads --tags . >actual.v1 &&
|
||||
test_cmp expect actual.v1 &&
|
||||
git -c protocol.version=2 ls-remote --heads --tags . >actual.v2 &&
|
||||
test_cmp expect actual.v2
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user