mirror of
https://git.zx2c4.com/cgit
synced 2024-11-22 16:38:42 +00:00
Add namespace support to dumb-clone
This requires namespacing the HEAD symbolic ref and the list of refs. Sending HEAD required some tweaking, since the file itself refers to a namespaced ref, but we want to provide the ref with its namespace stripped off. Signed-off-by: Richard Maw <richard.maw@gmail.com>
This commit is contained in:
parent
44efabfc5e
commit
c8d5732367
23
ui-clone.c
23
ui-clone.c
@ -86,6 +86,9 @@ void cgit_clone_info(void)
|
|||||||
ctx.page.filename = "info/refs";
|
ctx.page.filename = "info/refs";
|
||||||
cgit_print_http_headers();
|
cgit_print_http_headers();
|
||||||
for_each_ref(print_ref_info, NULL);
|
for_each_ref(print_ref_info, NULL);
|
||||||
|
/* NOTE: we pass an empty prefix because we want to enumerate everything
|
||||||
|
not just all refs under $namespace/refs/ */
|
||||||
|
cgit_for_each_namespaced_ref_in("", print_ref_info, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cgit_clone_objects(void)
|
void cgit_clone_objects(void)
|
||||||
@ -105,5 +108,23 @@ void cgit_clone_objects(void)
|
|||||||
|
|
||||||
void cgit_clone_head(void)
|
void cgit_clone_head(void)
|
||||||
{
|
{
|
||||||
send_file(git_path("%s", "HEAD"));
|
if (get_git_namespace()) {
|
||||||
|
unsigned char unused[20];
|
||||||
|
char *namespaced_head = NULL;
|
||||||
|
const char *ref;
|
||||||
|
namespaced_head = mkpathdup("%sHEAD", get_git_namespace());
|
||||||
|
/* NOTE: RESOLVE_REF_NO_RECURSE is required to prevent it resolving HEAD
|
||||||
|
into a ref outside of the namespace. */
|
||||||
|
ref = resolve_ref_unsafe(namespaced_head, RESOLVE_REF_NO_RECURSE, unused, NULL);
|
||||||
|
if (!ref) {
|
||||||
|
cgit_print_error_page(404, "Not found", "Not found");
|
||||||
|
free(namespaced_head);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cgit_print_http_headers();
|
||||||
|
htmlf("ref: %s\n", strip_namespace(ref));
|
||||||
|
free(namespaced_head);
|
||||||
|
} else {
|
||||||
|
send_file(git_path("%s", "HEAD"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user