Thread (30 messages) 30 messages, 4 authors, 12d ago
COOLING12d

[PATCH v4 2/3] advice: introduce advice scoping mechanism

From: Vsevolod Myalitsin <hidden>
Date: 2026-09-10 08:54:13
Subsystem: the rest · Maintainer: Linus Torvalds

The advice settings currently do not distinguish between configuration
scopes. Add a scope hint to advice_setting so that an advice can
recommend a specific configuration scope when disabling it.

Use the existing enum config_scope to represent the scope, with
CONFIG_SCOPE_UNKNOWN indicating that the default configuration scope
should be used.

Signed-off-by: Vsevolod Myalitsin <redacted>
---
 advice.c | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/advice.c b/advice.c
index b556c8b38e..12a68ea716 100644
--- a/advice.c
+++ b/advice.c
@@ -42,6 +42,7 @@ enum advice_level {
 
 struct advice_setting {
 	const char *key;
+	enum config_scope scope_hint;
 	enum advice_level level;
 };
 
@@ -96,9 +97,16 @@ static struct advice_setting advice_setting[] = {
 	[ADVICE_WORKTREE_ADD_ORPHAN]			= { "worktreeAddOrphan" },
 };
 
+/*
+ * TRANSLATORS: This is a command line that the user should run.
+ *              Do not translate the part inside double quotes.
+ *              The first %s is the config scope (e.g. " --global"),
+ *              the second %s is the advice key (e.g. "defaultBranchName").
+ */
+
 static const char turn_off_instructions[] =
 N_("\n"
-   "Disable this message with \"git config set advice.%s false\"");
+   "Disable this message with \"git config set%s advice.%s false\"");
 
 static void vadvise(const char *advice,
 	const struct advice_setting *setting, va_list params)
@@ -109,8 +117,21 @@ static void vadvise(const char *advice,
 	strbuf_vaddf(&buf, advice, params);
 
 	if (setting && setting->level == ADVICE_LEVEL_NONE) {
+		const char *scope = "";
+		switch (setting->scope_hint) {
+		case CONFIG_SCOPE_LOCAL:
+		case CONFIG_SCOPE_UNKNOWN:
+			break;
+		case CONFIG_SCOPE_GLOBAL:
+			scope = " --global";
+			break;
+		case CONFIG_SCOPE_SYSTEM:
+			scope = " --system";
+			break;
+		}
 		strbuf_addf(&buf, turn_off_instructions,
-					setting->key);
+				scope, setting->key);
+	}
 
 	for (cp = buf.buf; *cp; cp = np) {
 		np = strchrnul(cp, '\n');
-- 
2.50.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help