Git development
 help / color / mirror / Atom feed
* [PATCH v3] advice: use global config for default branch name
@ 2027-08-29  0:49 Vsevolod Myalitsin
  2026-09-09 20:27 ` Jeff King
                   ` (2 more replies)
  0 siblings, 3 replies; 25+ messages in thread
From: Vsevolod Myalitsin @ 2027-08-29  0:49 UTC (permalink / raw)
  To: git; +Cc: gitster, peff, ben.knoble, Vsevolod Myalitsin

Some advice messages suggest disabling the advice with
"git config set advice.<name> false", even when the
corresponding configuration should be set at a different scope.

Add a scope hint to advice settings so that the suggested
command uses the appropriate config scope.

Pass the advice setting itself to vadvise() instead of passing
its fields separately. Use NULL for advise() calls that are not
associated with an advice setting.

Signed-off-by: Vsevolod Myalitsin <ub4nal@mail.ru>
---
 advice.c | 43 ++++++++++++++++++++++++++++++++-----------
 1 file changed, 32 insertions(+), 11 deletions(-)

diff --git a/advice.c b/advice.c
index 63bf8b0c5f..80cc388215 100644
--- a/advice.c
+++ b/advice.c
@@ -40,10 +40,19 @@ enum advice_level {
 	ADVICE_LEVEL_ENABLED,
 };
 
-static struct {
+enum advice_scope {
+	ADVICE_SCOPE_LOCAL = 0,
+	ADVICE_SCOPE_GLOBAL,
+	ADVICE_SCOPE_SYSTEM,
+};
+
+struct advice_setting {
 	const char *key;
+	enum advice_scope scope_hint;
 	enum advice_level level;
-} advice_setting[] = {
+};
+
+static struct advice_setting advice_setting[] = {
 	[ADVICE_ADD_EMBEDDED_REPO]			= { "addEmbeddedRepo" },
 	[ADVICE_ADD_EMPTY_PATHSPEC]			= { "addEmptyPathspec" },
 	[ADVICE_ADD_IGNORED_FILE]			= { "addIgnoredFile" },
@@ -51,7 +60,7 @@ static struct {
 	[ADVICE_AM_WORK_DIR] 				= { "amWorkDir" },
 	[ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME] 	= { "checkoutAmbiguousRemoteBranchName" },
 	[ADVICE_COMMIT_BEFORE_MERGE]			= { "commitBeforeMerge" },
-	[ADVICE_DEFAULT_BRANCH_NAME]			= { "defaultBranchName" },
+	[ADVICE_DEFAULT_BRANCH_NAME]			= { "defaultBranchName", ADVICE_SCOPE_GLOBAL },
 	[ADVICE_DETACHED_HEAD]				= { "detachedHead" },
 	[ADVICE_DIVERGING]				= { "diverging" },
 	[ADVICE_FETCH_SET_HEAD_WARN]			= { "fetchRemoteHEADWarn" },
@@ -96,18 +105,31 @@ static struct {
 
 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, int display_instructions,
-		    const char *key, va_list params)
+static void vadvise(const char *advice,
+	const struct advice_setting *setting, va_list params)
 {
 	struct strbuf buf = STRBUF_INIT;
 	const char *cp, *np;
 
 	strbuf_vaddf(&buf, advice, params);
 
-	if (display_instructions)
-		strbuf_addf(&buf, turn_off_instructions, key);
+	if (setting && setting->level == 0) {
+		const char *scope = "";
+		switch (setting->scope_hint) {
+			case ADVICE_SCOPE_LOCAL:
+				break;
+			case ADVICE_SCOPE_GLOBAL:
+				scope = " --global";
+				break;
+			case ADVICE_SCOPE_SYSTEM:
+				scope = " --system";
+				break;
+		}
+		strbuf_addf(&buf, turn_off_instructions,
+				scope, setting->key);
+	}
 
 	for (cp = buf.buf; *cp; cp = np) {
 		np = strchrnul(cp, '\n');
@@ -126,7 +148,7 @@ void advise(const char *advice, ...)
 {
 	va_list params;
 	va_start(params, advice);
-	vadvise(advice, 0, "", params);
+	vadvise(advice, NULL, params);
 	va_end(params);
 }
 
@@ -155,8 +177,7 @@ void advise_if_enabled(enum advice_type type, const char *advice, ...)
 		return;
 
 	va_start(params, advice);
-	vadvise(advice, !advice_setting[type].level, advice_setting[type].key,
-		params);
+	vadvise(advice, &advice_setting[type], params);
 	va_end(params);
 }
 
-- 
2.50.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2026-09-13 16:32 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2027-08-29  0:49 [PATCH v3] advice: use global config for default branch name Vsevolod Myalitsin
2026-09-09 20:27 ` Jeff King
2026-09-09 21:21   ` Junio C Hamano
2026-09-09 21:22   ` Vsevolod Myalitsin
2026-09-09 22:46     ` Jeff King
2026-09-10  4:43       ` Vsevolod Myalitsin
2026-09-09 20:50 ` Junio C Hamano
2026-09-09 21:30   ` Vsevolod Myalitsin
2026-09-09 22:31     ` Junio C Hamano
2026-09-10  8:53 ` [PATCH v4 0/3] defaultBranchName advice is useless Vsevolod Myalitsin
2026-09-10  8:53   ` [PATCH v4 1/3] advice: pass the entire advice_setting to vadvise() Vsevolod Myalitsin
2026-09-10 17:43     ` SZEDER Gábor
2026-09-10  8:53   ` [PATCH v4 2/3] advice: introduce advice scoping mechanism Vsevolod Myalitsin
2026-09-10 15:36     ` Junio C Hamano
2026-09-10 15:52       ` Jeff King
2026-09-10 17:54         ` Vsevolod Myalitsin
2026-09-10 19:05           ` Jeff King
2026-09-10 18:35         ` Junio C Hamano
2026-09-10 19:03           ` Jeff King
2026-09-10 19:54             ` Junio C Hamano
2026-09-10 20:11               ` Jeff King
2026-09-10 20:25                 ` Junio C Hamano
2026-09-12  8:12                   ` Vsevolod Myalitsin
2026-09-13 16:32                     ` Junio C Hamano
2026-09-10  8:53   ` [PATCH v4 3/3] advice: use global config for default branch name Vsevolod Myalitsin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox