]> git.ipfire.org Git - thirdparty/git.git/commitdiff
remote-curl: simplify passing of push specs
authorRené Scharfe <l.s.r@web.de>
Wed, 15 Jul 2026 04:41:17 +0000 (06:41 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 15 Jul 2026 21:13:47 +0000 (14:13 -0700)
The push specs are kept in a strvec, whose array is NULL-terminated.
Pass only that to the protocol handlers, which avoids dealing with item
counts and their conversions from size_t to int, slightly simplifying
the code.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
remote-curl.c

index 9e614c5567417f29c1c3583cdee86f4d9e9c3c0a..2c35dd52400f83124a6e8068143cb74b5ea5494e 100644 (file)
@@ -1340,10 +1340,9 @@ static void parse_get(const char *arg)
        fflush(stdout);
 }
 
-static int push_dav(int nr_spec, const char **specs)
+static int push_dav(const char **specs)
 {
        struct child_process child = CHILD_PROCESS_INIT;
-       size_t i;
 
        child.git_cmd = 1;
        strvec_push(&child.args, "http-push");
@@ -1353,15 +1352,14 @@ static int push_dav(int nr_spec, const char **specs)
        if (options.verbosity > 1)
                strvec_push(&child.args, "--verbose");
        strvec_push(&child.args, url.buf);
-       for (i = 0; i < nr_spec; i++)
-               strvec_push(&child.args, specs[i]);
+       strvec_pushv(&child.args, specs);
 
        if (run_command(&child))
                die(_("git-http-push failed"));
        return 0;
 }
 
-static int push_git(struct discovery *heads, int nr_spec, const char **specs)
+static int push_git(struct discovery *heads, const char **specs)
 {
        struct rpc_state rpc = RPC_STATE_INIT;
        int i, err;
@@ -1400,8 +1398,8 @@ static int push_git(struct discovery *heads, int nr_spec, const char **specs)
                strvec_push(&args, "--force-if-includes");
 
        strvec_push(&args, "--stdin");
-       for (i = 0; i < nr_spec; i++)
-               packet_buf_write(&preamble, "%s\n", specs[i]);
+       for (; *specs; specs++)
+               packet_buf_write(&preamble, "%s\n", *specs);
        packet_buf_flush(&preamble);
 
        memset(&rpc, 0, sizeof(rpc));
@@ -1416,15 +1414,15 @@ static int push_git(struct discovery *heads, int nr_spec, const char **specs)
        return err;
 }
 
-static int push(int nr_spec, const char **specs)
+static int push(const char **specs)
 {
        struct discovery *heads = discover_refs("git-receive-pack", 1);
        int ret;
 
        if (heads->proto_git)
-               ret = push_git(heads, nr_spec, specs);
+               ret = push_git(heads, specs);
        else
-               ret = push_dav(nr_spec, specs);
+               ret = push_dav(specs);
        free_discovery(heads);
        return ret;
 }
@@ -1448,7 +1446,7 @@ static void parse_push(struct strbuf *buf)
                        break;
        } while (1);
 
-       ret = push(specs.nr, specs.v);
+       ret = push(specs.v);
        printf("\n");
        fflush(stdout);