Re: [PATCH v2 1/3] config: add git_config_append_parameter()
From: Patrick Steinhardt <hidden>
Date: 2026-09-07 08:14:14
On Fri, Sep 04, 2026 at 03:51:24PM +0000, Thomas Bachem via GitGitGadget wrote:
From: Thomas Bachem <redacted> Split the part of git_config_push_split_parameter() that formats one GIT_CONFIG_PARAMETERS entry into a helper that appends it to a strbuf, so that a caller can build a value for a child's environment without knowing the quoting. The sequencer is about to do that.
Readers who don't have any context around GIT_CONFIG_PARAMETERS and what it does will have a bit of a hard time making much sense of this, I think. It usually helps to give a sentence or two explaining what the infra even does, and what this quoting looks like.
quoted hunk ↗ jump to hunk
Assisted-by: Claude Fable 5.1 Signed-off-by: Thomas Bachem <redacted> --- config.c | 20 +++++++++++++------- config.h | 10 ++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-)diff --git a/config.c b/config.c index d9019e7e6c..e0bb29b53d 100644 --- a/config.c +++ b/config.c@@ -450,18 +450,24 @@ static int git_config_include(const char *var, const char *value, return ret; } +void git_config_append_parameter(struct strbuf *env, const char *key,
Nit: callling this `env` assumes a bit too much about what this buffer is going to be used for. I'd have called it just `buf`.
quoted hunk ↗ jump to hunk
diff --git a/config.h b/config.h index b66dd08007..fcf48f6245 100644 --- a/config.h +++ b/config.h@@ -22,6 +22,7 @@ */ struct object_id; +struct strbuf; /* git_config_parse_key() returns these negated: */ #define CONFIG_INVALID_KEY 1@@ -186,6 +187,15 @@ int git_config_from_blob_oid(config_fn_t fn, const char *name, enum config_scope scope); void git_config_push_parameter(const char *text); void git_config_push_env(const char *spec); + +/* + * Append `key=value` to the GIT_CONFIG_PARAMETERS value in `env`, quoted + * the way git_config_from_parameters() reads it, so that a child can be + * given configuration on top of what this process was given. A NULL + * `value` appends a boolean entry. + */ +void git_config_append_parameter(struct strbuf *env, const char *key, + const char *value);
Pointing to that other function makes sense, but neither of the functions documents the actual format that's used. Patrick