Re: [PATCH] remote-curl: simplify passing of push specs
From: Patrick Steinhardt <hidden>
Date: 2026-07-15 06:41:14
On Wed, Jul 15, 2026 at 06:41:17AM +0200, René Scharfe wrote:
quoted hunk ↗ jump to hunk
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");
I wonder whether the interface would be even better if we simply passed around a `const struct strvec *` directly. That makes it explicit what kind of guarantees we have, and all transitive callers already have one available anyway.
quoted hunk ↗ jump to hunk
@@ -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);
I thought that we had something like `strvec_pushvec()` that knew to also optimize for this case so that we don't have to reallocate the vector multiple times. And if we had that function it would even be more efficient to pass it down the stack. But we seemingly don't have it, so that argument is kind of moot. Other than those nits the patch looks good to me, thanks! Patrick