From: "René Scharfe" <l.s.r@web.de>
To: Git List <git@vger.kernel.org>
Subject: [PATCH] remote-curl: simplify passing of push specs
Date: Wed, 15 Jul 2026 06:41:17 +0200 [thread overview]
Message-ID: <935883f3-3be4-4c51-9711-5208b9ef9ca1@web.de> (raw)
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>
---
remote-curl.c | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/remote-curl.c b/remote-curl.c
index 9e614c5567..2c35dd5240 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -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);
--
2.55.0
next reply other threads:[~2026-07-15 4:41 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-15 4:41 René Scharfe [this message]
2026-07-15 6:41 ` [PATCH] remote-curl: simplify passing of push specs Patrick Steinhardt
2026-07-15 15:39 ` René Scharfe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=935883f3-3be4-4c51-9711-5208b9ef9ca1@web.de \
--to=l.s.r@web.de \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox