Thread (31 messages) flat view 31 messages, 5 authors, 2h ago

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help