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

Re: BUG: Various "advice.*" config doesn't work

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 31, 2022, 17:28 UTC
Message-ID
<xmqq1r0nke71.fsf@gitster.g>
In-Reply-To
<YfgLeVw0rrk7Q5/+@nand.local>
Taylor Blau <me@ttaylorr.com> writes:
Show 7 quoted lines
> But having something like (in builtin/add.c:add_files()):
>
>     if (advice_enabled(ADVICE_ADD_IGNORED_FILES))
>         advise(_("..."));
>
> feels like it opens the door to call advise() by default if we happened
> to forget to read the configuration.
True.
> I think that is a good candidate to
> be replaced with advice_if_enabled().

Meaning advice_enabled() will lazily load the configuration? If so, then what you saw in builtin/add.c::add_files() would automatically become just as safe as advice_if_enabled(), no?

Show 14 quoted lines
> I'm not sure if that is true in general, though. Take a look at this
> example (from branch.c:create_branch()):
>
>     if (advice_enabled(ADVICE_SET_UPSTREAM_FAILURE)) {
>         error(_(upstream_missing), start_name);
>         advise(_(upstream_advice));
>         exit(1);
>     }
>     die(_(upstream_missing), start_name);
>
> This also makes it possible to call advise() when we shouldn't have. But
> how should we rewrite this code? Wanting to either error() (and then
> call exit(1)) or die() based on whether or not we're going to print the
> advice makes it tricky.

I am puzzled why you think the above "check, do things, give a piece of advice, and do even more things" needs to be rewritten.

Everything you are showing above becomes a problem only when advice_enabled() does not work reliably, due to a bug that fails to read the configuration.

> Maybe, though I still think BUG() is a bit extreme, and we could
> accomplish the same by having the advice API just read the config if it
> hasn't done so already before emitting advice.

Calling things like git_config(git_default_config) with side-effects on other global variables are definitely a no-no, but as long as it reacts to configuration variables only under advice.* namespace, that might be OK.

Thanks.
Previous: Taylor BlauNext: Taylor Blau
Message 3 of 5 in “BUG: Various "advice.*" config doesn't work”
  1. Ævar Arnfjörð BjarmasonJan 28, 2022
  2. Taylor BlauJan 31, 2022
  3. Junio C HamanoJan 31, 2022
  4. Taylor BlauJan 31, 2022
  5. Junio C HamanoJan 31, 2022

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.