summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2019-02-05 14:26:15 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2019-02-05 14:26:15 -0800
commit9c96ab987243724915fedd7ea051438b8e553e07 (patch)
treedb510f7ef3762672972dd23b2be64cda759e26a2
parentMerge branch 'ab/commit-graph-write-progress' (diff)
parentls-refs: filter refs using namespace-stripped name (diff)
downloadtgif-9c96ab987243724915fedd7ea051438b8e553e07.tar.xz
Merge branch 'jt/namespaced-ls-refs-fix'
Fix namespace support in protocol v2. * jt/namespaced-ls-refs-fix: ls-refs: filter refs using namespace-stripped name
-rw-r--r--ls-refs.c2
-rwxr-xr-xt/t5702-protocol-v2.sh21
2 files changed, 22 insertions, 1 deletions
diff --git a/ls-refs.c b/ls-refs.c
index 9c9a7c647f..0a7dbc6442 100644
--- a/ls-refs.c
+++ b/ls-refs.c
@@ -44,7 +44,7 @@ static int send_ref(const char *refname, const struct object_id *oid,
if (ref_is_hidden(refname_nons, refname))
return 0;
- if (!ref_match(&data->prefixes, refname))
+ if (!ref_match(&data->prefixes, refname_nons))
return 0;
strbuf_addf(&refline, "%s %s", oid_to_hex(oid), refname_nons);
diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh
index 7ca1aab6b5..db4ae09f2f 100755
--- a/t/t5702-protocol-v2.sh
+++ b/t/t5702-protocol-v2.sh
@@ -561,6 +561,27 @@ test_expect_success 'fetch with http:// using protocol v2' '
grep "git< version 2" log
'
+test_expect_success 'fetch from namespaced repo respects namespaces' '
+ test_when_finished "rm -f log" &&
+
+ git init "$HTTPD_DOCUMENT_ROOT_PATH/nsrepo" &&
+ test_commit -C "$HTTPD_DOCUMENT_ROOT_PATH/nsrepo" one &&
+ test_commit -C "$HTTPD_DOCUMENT_ROOT_PATH/nsrepo" two &&
+ git -C "$HTTPD_DOCUMENT_ROOT_PATH/nsrepo" \
+ update-ref refs/namespaces/ns/refs/heads/master one &&
+
+ GIT_TRACE_PACKET="$(pwd)/log" git -C http_child -c protocol.version=2 \
+ fetch "$HTTPD_URL/smart_namespace/nsrepo" \
+ refs/heads/master:refs/heads/theirs &&
+
+ # Server responded using protocol v2
+ grep "fetch< version 2" log &&
+
+ git -C "$HTTPD_DOCUMENT_ROOT_PATH/nsrepo" rev-parse one >expect &&
+ git -C http_child rev-parse theirs >actual &&
+ test_cmp expect actual
+'
+
test_expect_success 'push with http:// and a config of v2 does not request v2' '
test_when_finished "rm -f log" &&
# Till v2 for push is designed, make sure that if a client has