Git development
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Vsevolod Myalitsin <ub4nal@mail.ru>,
	ben.knoble@gmail.com, git@vger.kernel.org
Subject: Re: [PATCH] advice: use global config for default branch name
Date: Wed, 9 Sep 2026 11:54:40 -0400	[thread overview]
Message-ID: <20260909155440.GA94069@coredump.intra.peff.net> (raw)
In-Reply-To: <xmqqik4fwoz5.fsf@gitster.g>

On Tue, Sep 08, 2026 at 11:57:18AM -0700, Junio C Hamano wrote:

> Vsevolod Myalitsin <ub4nal@mail.ru> writes:
> 
> > Yes, I agree that passing the "advice_setting" itself is cleaner and
> > more future-proof. I will change "vadvise()" to take a pointer to the
> > corresponding "advice_setting" instead.
> 
> One minor glitch is that there is an ad-hoc vadvise() call in
> advise() that is not tied to any particular entry in the
> advise_setting[] table.  I think we'd need to give a name to the
> advice_setting struct type, instanciate an ad-hoc instance on stack,
> and pass it down the callchain, perhaps like so:

Isn't this a natural fit for NULL? That ad-hoc call wants to pass the
notion that there is no matching advice config (or at least not that it
knows about). And then vadvise() can check:

  if (conf && !conf->level)
	...show instructions...

which seems natural to me.

As a side note, I think this is revealing some existing shortcomings in
the callers.  Most of the calls to advise() are doing something like:

  if (advice_is_enabled(ADVICE_FOO))
	advise("ask your doctor about foo");

Those won't get the "turn this off with advice.foo instructions". Only:

  advise_if_enabled(ADVICE_FOO, "ask your doctor about foo");

will. So there are many missed opportunities for offering the turn-off
instructions. Nobody seems to have complained, which makes me wonder if
the turn-off instructions would be annoyingly chatty if we printed them
all the time. Most of those calls predate the addition if the turn-off
instructions and advise_if_enabled(), which was added in 2020. I wonder
how people would feel if we converted them all and started printing the
turn-off instructions everywhere.

Anyway, UI philosophizing aside, another obvious pattern for advise()
is:

  if (advice_is_enabled(ADVICE_FOO)) {
	/* do lots of work */
	advise("try %s", results_of_work);
  }

which _wouldn't_ want to convert to advise_if_enabled(). If that wants
the turn-off message, we'd want to be able to pass the advice enum to
advise(), like:

  advise(ADVICE_FOO, "try %s", results_of_work);

at which point we might need a way to pass the NULL advice marker
somehow (for those cases which really aren't tied to a config value,
though arguably that is an anti-pattern in itself).

I guess the caller could just do:

  advise_if_enabled(ADVICE_FOO, ...);

inside the block. We know that it's enabled, but it's not like the check
is expensive.

-Peff

  parent reply	other threads:[~2026-09-09 15:54 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-07 12:56 [PATCH] advice: use global config for default branch name Vsevolod Myalitsin
2026-09-08 13:35 ` Ben Knoble
2026-09-08 18:56   ` Vsevolod Myalitsin
2026-09-08 14:59     ` Ben Knoble
2026-09-08 19:56       ` R4NC
2026-09-08 16:24         ` D. Ben Knoble
2026-09-08 16:31     ` Junio C Hamano
2026-09-08 21:38       ` Vsevolod Myalitsin
2026-09-08 18:57         ` Junio C Hamano
2026-09-09  6:49           ` R4NC
2026-09-09 15:54           ` Jeff King [this message]
2026-09-09 18:51             ` Junio C Hamano
2026-09-09 19:51               ` Jeff King
2026-09-10  4:23                 ` Junio C Hamano
2026-09-10  4:33                   ` Jeff King
2026-09-10 12:18                     ` Junio C Hamano
2026-09-10 16:31                       ` Jeff King
2026-09-10  4:28                 ` Junio C Hamano
2027-08-29  0:59               ` Vsevolod Myalitsin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260909155440.GA94069@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=ben.knoble@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=ub4nal@mail.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox