Re: [PATCH/RFC 3/6] http-backend: handle refspec argument
From: Eric Sunshine <hidden>
Date: 2016-06-16 02:18:50
On Fri, Apr 15, 2016 at 3:19 PM, David Turner [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Allow clients to pass a "refspec" parameter through to upload-pack; upload-pack will only advertise refs which match that refspec. Signed-off-by: David Turner <redacted> ---diff --git a/http-backend.c b/http-backend.c@@ -465,6 +466,14 @@ static void get_info_refs(char *arg) argv_array_push(&argv, "--stateless-rpc"); argv_array_push(&argv, "--advertise-refs"); + refspec = get_parameter("refspec"); + if (refspec) { + struct strbuf interesting_refs = STRBUF_INIT; + strbuf_addstr(&interesting_refs, "--interesting-refs="); + strbuf_addstr(&interesting_refs, refspec); + argv_array_push(&argv, interesting_refs.buf); + strbuf_release(&interesting_refs); + }
if (refspec)
argv_array_pushf(&interesting_refs,
"--interesting-refs=%s", refspec);
quoted hunk ↗ jump to hunk
argv_array_push(&argv, "."); run_service(argv.argv, 0); argv_array_clear(&argv);@@ -841,6 +905,19 @@ int main(int argc, char **argv) + if (starts_with(arg, "--interesting-refs=")) { + struct string_list_item *item; + + string_list_split(&interesting_refspecs, arg + 19, + ' ', -1); + for_each_string_list_item(item, &interesting_refspecs) { + if (check_refname_format(item->string, + REFNAME_REFSPEC_PATTERN)) + die("invalid refspec %s", item->string); + item->util = make_refspec_data(item->string); + } + continue; + }
Is this leaking the string list?
if (!strcmp(arg, "--stateless-rpc")) {
stateless_rpc = 1;
continue;
--
2.4.2.767.g62658d5-twtrsrc