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

Re: [PATCH 1/1] add: use advise function to display hints

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 2, 2020, 22:47 UTC
Message-ID
<xmqqzhf5cw69.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<xmqqpng1eisc.fsf@gitster-ct.c.googlers.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 5 quoted lines
> Use of advise() function is good for giving hints not just due to
> its yellow coloring (which by the way I find not very readable,
> perhaps because I use black ink on white paper).  One good thing in
> using the advise() API is that the messages can also be squelched
> with advice.* configuration variables.
A side note.

Right now, the advise() API is a bit awkweard to use correctly. When introducing a new advice message, you would

 * come up with advice.frotz configuration variable
 * define and declare advice_frotz global variable that defaults to
   true
 * sprinkle calls like this:
	if (advice_frotz)
		advise(_("helpful message about frotz"));
I am wondering about two things:
 (1) if we can update the API so that the above can be reduced to
     just adding calls like:
	advise_ng("frotz", _("helpful message about frotz"));
 (2) if such a simplified advise_ng API is a good idea to begin
     with.

There are a few advantages the current API has, but it cuts both ways.

 - Any new advice toggle MUST be registered to the
   advice.c::advice_config[] table.  This table can later be
   extended in the future to allow a list of the toggles to be
   produced at runtime.
   This can be seen as an easy mechanism to force programmers to
   keep the list up to date.  Or it can also be seen as the source
   of extra work.
 - advise() calls can be made without being guarded by any advice.*
   configuration variable.  In the overly simplified advise_ng() API
   shown above, we cannot expresss a pattern like this:
	if (advice_frotz) {
		... make expensive computation to
		... come up with values that need to be shown
		... in the advise() message
		char *result = expensive_computation(...);
		advise(_("message %s about frotz", result));
		free(result);
	}
   without adding another helper function. e.g.
	if (advise_ng_enabled("frotz")) {
		char *result = expensive_computation(...);
		/*
                 * advise_ng("frotz", _("message %s about frotz", result));
                 * is fine as well, but slightly less efficient as
                 * it would involve another call to *_enabled(), so use
		 * the unconditional form of the call
		 */
		advise_ng_raw(_("message %s about frotz", result));
		free(result);
	}
Previous: Junio C HamanoNext: Heba Waly
Message 4 of 26 in “[Outreachy] [RFC] add: use advise function to display hints”
  1. 0/1 [Outreachy] [RFC] add: use advise function to display hintsHeba Waly via GitGitGadget, Jan 2, 2020
  2. 1/1 add: use advise function to display hintsHeba Waly via GitGitGadget, Jan 2, 2020
  3. Junio C HamanoJan 2, 2020
  4. Junio C HamanoJan 2, 2020
  5. Heba WalyJan 7, 2020
  6. Junio C HamanoJan 7, 2020
  7. Heba WalyJan 7, 2020
  8. Emily ShafferJan 6, 2020
  9. Junio C HamanoJan 6, 2020
  10. Heba WalyJan 7, 2020
  11. Emily ShafferJan 6, 2020
  12. Junio C HamanoJan 6, 2020
  13. 0/1 [Outreachy] add: use advise function to display hintsHeba Waly via GitGitGadget, Jan 7, 2020
  14. 1/1 add: use advise function to display hintsHeba Waly via GitGitGadget, Jan 7, 2020
  15. Emily ShafferJan 27, 2020
  16. Heba WalyJan 29, 2020
  17. Jonathan TanJan 28, 2020
  18. Heba WalyJan 29, 2020
  19. add: use advice API to display hintsHeba Waly via GitGitGadget, Jan 30, 2020
  20. Junio C HamanoJan 30, 2020
  21. Heba WalyJan 31, 2020
  22. Junio C HamanoFeb 5, 2020
  23. Heba WalyFeb 5, 2020
  24. Junio C HamanoFeb 5, 2020
  25. Heba WalyFeb 5, 2020
  26. Junio C HamanoFeb 5, 2020

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.