[PATCH v4 2/3] advice: introduce advice scoping mechanism
- From
- Vsevolod Myalitsin <ub4nal@mail.ru>
- Date
- Sep 10, 2026, 08:53 UTC
- Message-ID
- <20260910085353.109373-3-ub4nal@mail.ru>
- In-Reply-To
- <20260910085353.109373-1-ub4nal@mail.ru>
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 <ub4nal@mail.ru> --- 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