git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Jeff King <peff@peff.net>
Date
Sep 10, 2026, 15:52 UTC
Message-ID
<20260910155247.GA251185@coredump.intra.peff.net>
In-Reply-To
<xmqqzexpf78k.fsf@gitster.g>
On Thu, Sep 10, 2026 at 08:36:59AM -0700, Junio C Hamano wrote:
Show 32 quoted lines
> > @@ -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;
> > +		}
> 
> make DEVELOPER=YesPlease would die due to
> 
> advice.c: In function 'vadvise':
> advice.c:123:17: error: enumeration value 'CONFIG_SCOPE_WORKTREE' not handled in switch [-Werror=switch]
>   123 |                 switch (setting->scope_hint) {
>       |                 ^~~~~~
> advice.c:123:17: error: enumeration value 'CONFIG_SCOPE_COMMAND' not handled in switch [-Werror=switch]
> advice.c:123:17: error: enumeration value 'CONFIG_SCOPE_SUBMODULE' not handled in switch [-Werror=switch]
> 
> We probably should have
> 
> 		default:
> 			BUG("advice settings at wrong config scope");
> 
> or something there.

It is funny that we would handle LOCAL here (which we do not expect anybody to pass) but would BUG() on other stuff like WORKTREE (which we also would not expect).

So if we are going to do a switch statement, then I'd expect:
  switch (setting->scope_hint) {
  case CONFIG_SCOPE_GLOBAL:
	scope = " --global";
	break;
  case CONFIG_SCOPE_SYSTEM:
	scope = " --system";
	break;
  default:
	/*
	 * Scope is local or otherwise unsupported; just recommend
	 * the usual unadorned config command.
         */
	break;
  }

I guess maybe that would surprise somebody who tried to add CONFIG_SCOPE_WORKTREE support, and they'd rather see a BUG(). I dunno.

I was hoping we could avoid enumerating things at all here, but using config_scope_name() did involve a bit more string construction (and a hidden assumption that each scope name has a matching "--foo" option).

I'm really not sure why anybody would use those other flags, though (or even --system, for that matter). After reading the thread again, I get why we want "--global" for advice that only affects new repository creation (like defaultBranchName), since otherwise it could never have any effect. But why would you ever want --system?

I feel like we are maybe leading poor Vsevolod in circles, though. At some point there are diminishing returns for polishing this.

-Peff
Previous: Junio C HamanoNext: Vsevolod Myalitsin
Message 13 of 30 in “advice: use global config for default branch name”
  1. advice: use global config for default branch nameVsevolod Myalitsin, Aug 29, 2027
  2. Jeff KingSep 9, 2026
  3. Junio C HamanoSep 9, 2026
  4. Vsevolod MyalitsinSep 9, 2026
  5. Jeff KingSep 9, 2026
  6. Vsevolod MyalitsinSep 10, 2026
  7. Junio C HamanoSep 9, 2026
  8. Vsevolod MyalitsinSep 9, 2026
  9. Junio C HamanoSep 9, 2026
  10. 0/3 defaultBranchName advice is uselessVsevolod Myalitsin, Sep 10, 2026
  11. 2/3 advice: introduce advice scoping mechanismVsevolod Myalitsin, Sep 10, 2026
  12. Junio C HamanoSep 10, 2026
  13. Jeff KingSep 10, 2026
  14. Vsevolod MyalitsinSep 10, 2026
  15. Jeff KingSep 10, 2026
  16. Junio C HamanoSep 10, 2026
  17. Jeff KingSep 10, 2026
  18. Junio C HamanoSep 10, 2026
  19. Jeff KingSep 10, 2026
  20. Junio C HamanoSep 10, 2026
  21. Vsevolod MyalitsinSep 12, 2026
  22. Junio C HamanoSep 13, 2026
  23. Jeff KingSep 14, 2026
  24. Junio C HamanoSep 14, 2026
  25. Junio C HamanoSep 14, 2026
  26. Vsevolod MyalitsinSep 17, 2026
  27. Jeff KingSep 17, 2026
  28. 3/3 advice: use global config for default branch nameVsevolod Myalitsin, Sep 10, 2026
  29. 1/3 advice: pass the entire advice_setting to vadvise()Vsevolod Myalitsin, Sep 10, 2026
  30. SZEDER GáborSep 10, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.