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

Re: [PATCH 2/5] help: refactor command autocorrection handling

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 8, 2026, 23:52 UTC
Message-ID
<xmqqsea998vd.fsf@gitster.g>
In-Reply-To
<SY0P300MB080180E17B471505A4150C08CE78A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
Jiamu Sun <39@barroit.sh> writes:
Show 67 quoted lines
> Refactor autocorrect config into struct autocorr, with an explicit mode
> enum and a separate delay field. Move config parsing, TTY validation,
> and prompt handling into autocorrect.c.
>
> This simplifies help.c and makes state handling for autocorrect explicit
> and easier to maintain.
>
> Signed-off-by: Jiamu Sun <39@barroit.sh>
> ---
>  Makefile      |   1 +
>  autocorrect.c |  92 +++++++++++++++++++++++++++++++++++++++++++
>  autocorrect.h |  23 +++++++++++
>  help.c        | 106 ++++++++++----------------------------------------
>  4 files changed, 136 insertions(+), 86 deletions(-)
>  create mode 100644 autocorrect.c
>  create mode 100644 autocorrect.h
>
> diff --git a/Makefile b/Makefile
> index f3264d0a37cc..6111631c2caa 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1098,6 +1098,7 @@ LIB_OBJS += archive-tar.o
>  LIB_OBJS += archive-zip.o
>  LIB_OBJS += archive.o
>  LIB_OBJS += attr.o
> +LIB_OBJS += autocorrect.o
>  LIB_OBJS += base85.o
>  LIB_OBJS += bisect.o
>  LIB_OBJS += blame.o
> diff --git a/autocorrect.c b/autocorrect.c
> new file mode 100644
> index 000000000000..eaae01645910
> --- /dev/null
> +++ b/autocorrect.c
> @@ -0,0 +1,92 @@
> +#define USE_THE_REPOSITORY_VARIABLE
> +
> +#include "git-compat-util.h"
> +#include "autocorrect.h"
> +#include "config.h"
> +#include "parse.h"
> +#include "strbuf.h"
> +#include "prompt.h"
> +#include "gettext.h"
> +
> +static enum autocorr_mode parse_autocorr(const char *value)
> +{
> +	switch (git_parse_maybe_bool_text(value)) {
> +		case 1:
> +			return AUTOCORR_IMMEDIATELY;
> +		case 0:
> +			return AUTOCORR_HINTONLY;
> +		default: /* other random text */
> +			break;
> +	}
> +
> +	if (!strcmp(value, "prompt"))
> +		return AUTOCORR_PROMPT;
> +	else if (!strcmp(value, "never"))
> +		return AUTOCORR_NEVER;
> +	else if (!strcmp(value, "immediate"))
> +		return AUTOCORR_IMMEDIATELY;
> +	else if (!strcmp(value, "show"))
> +		return AUTOCORR_HINTONLY;
> +	else
> +		return AUTOCORR_DELAY;
> +}

You snuck in unnecessary "style fixes" to make bunch of "if()return" into if/else if cascade. Also what was AUTOCORRECT_SHOW is now returned as AUTOCORR_HINTONLY. There is no explanation on the reason behind these changes in the proposed log message, and hiding these small changes in a code movement patch makes reviewing the series harder than necessary.

The patch is doing too many things (namely, (1) code movement that will make it later reusable as a side effect but has no semantic changes in the current code, plus (2) change in style (like the one we see here), semantics (possibly the difference in SHOW and HINTONLY we see here) and features, possibly including the renaming of AUTOCORRECT_* into AUTOCORR_*.) Let's have "restructure with code movement and nothing else", followed by "other changes

I'll stop here, and expect this step to be split into at least two patches to make it more readable before we can review it again.

Thanks.
Previous: Jiamu SunNext: Jiamu Sun
Message 6 of 96 in “parseopt: add subcommand autocorrection”
  1. 0/5 parseopt: add subcommand autocorrectionJiamu Sun, Mar 8, 2026
  2. 1/5 parseopt: extract subcommand handling from parse_options_step()Jiamu Sun, Mar 8, 2026
  3. Junio C HamanoMar 8, 2026
  4. Jiamu SunMar 9, 2026
  5. 2/5 help: refactor command autocorrection handlingJiamu Sun, Mar 8, 2026
  6. Junio C HamanoMar 8, 2026
  7. Jiamu SunMar 9, 2026
  8. 3/5 parseopt: autocorrect mistyped subcommandsJiamu Sun, Mar 8, 2026
  9. Junio C HamanoMar 9, 2026
  10. Jiamu SunMar 9, 2026
  11. 4/5 parseopt: enable subcommand autocorrect for remote and notesJiamu Sun, Mar 8, 2026
  12. 5/5 help: add tests for subcommand autocorrectionJiamu Sun, Mar 8, 2026
  13. Aaron PlattnerMar 11, 2026
  14. Jiamu SunMar 11, 2026
  15. Junio C HamanoMar 12, 2026
  16. Junio C HamanoMar 8, 2026
  17. Jiamu SunMar 8, 2026
  18. 0/5 parseopt: add subcommand autocorrectionJiamu Sun, Mar 8, 2026
  19. 1/5 parseopt: extract subcommand handling from parse_options_step()Jiamu Sun, Mar 8, 2026
  20. 2/5 help: refactor command autocorrection handlingJiamu Sun, Mar 8, 2026
  21. 3/5 parseopt: autocorrect mistyped subcommandsJiamu Sun, Mar 8, 2026
  22. 4/5 parseopt: enable subcommand autocorrect for remote and notesJiamu Sun, Mar 8, 2026
  23. 5/5 help: add tests for subcommand autocorrectionJiamu Sun, Mar 8, 2026
  24. 0/8 parseopt: add subcommand autocorrectionJiamu Sun, Mar 10, 2026
  25. 1/8 parseopt: extract subcommand handling from parse_options_step()Jiamu Sun, Mar 10, 2026
  26. Karthik NayakMar 10, 2026
  27. Jiamu SunMar 11, 2026
  28. Junio C HamanoMar 11, 2026
  29. Junio C HamanoMar 11, 2026
  30. Jiamu SunMar 11, 2026
  31. 2/8 help: make autocorrect handling reusableJiamu Sun, Mar 10, 2026
  32. Karthik NayakMar 10, 2026
  33. Junio C HamanoMar 10, 2026
  34. Jiamu SunMar 11, 2026
  35. Jiamu SunMar 11, 2026
  36. 3/8 help: move tty check for autocorrection to autocorrect.cJiamu Sun, Mar 10, 2026
  37. Karthik NayakMar 10, 2026
  38. Jiamu SunMar 11, 2026
  39. Jiamu SunMar 12, 2026
  40. 4/8 autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINTONLYJiamu Sun, Mar 10, 2026
  41. Karthik NayakMar 10, 2026
  42. Jiamu SunMar 11, 2026
  43. 5/8 autocorrect: provide config resolution APIJiamu Sun, Mar 10, 2026
  44. Karthik NayakMar 10, 2026
  45. 6/8 parseopt: autocorrect mistyped subcommandsJiamu Sun, Mar 10, 2026
  46. Junio C HamanoMar 10, 2026
  47. Jiamu SunMar 11, 2026
  48. Jiamu SunMar 11, 2026
  49. Junio C HamanoMar 12, 2026
  50. Jiamu SunMar 12, 2026
  51. 7/8 parseopt: enable subcommand autocorrection for git-remote and git-notesJiamu Sun, Mar 10, 2026
  52. 8/8 help: add tests for subcommand autocorrectionJiamu Sun, Mar 10, 2026
  53. Junio C HamanoMar 11, 2026
  54. Jiamu SunMar 11, 2026
  55. 00/10 parseopt: add subcommand autocorrectionJiamu Sun, Mar 16, 2026
  56. 01/10 parseopt: extract subcommand handling from parse_options_step()Jiamu Sun, Mar 16, 2026
  57. 02/10 help: make autocorrect handling reusableJiamu Sun, Mar 16, 2026
  58. 03/10 help: move tty check for autocorrection to autocorrect.cJiamu Sun, Mar 16, 2026
  59. 04/10 autocorrect: use mode and delay instead of magic numbersJiamu Sun, Mar 16, 2026
  60. 05/10 autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINTJiamu Sun, Mar 16, 2026
  61. 06/10 autocorrect: provide config resolution APIJiamu Sun, Mar 16, 2026
  62. 07/10 parseopt: autocorrect mistyped subcommandsJiamu Sun, Mar 16, 2026
  63. Junio C HamanoMar 16, 2026
  64. Jiamu SunMar 17, 2026
  65. Junio C HamanoApr 15, 2026
  66. Jiamu SunApr 16, 2026
  67. 08/10 parseopt: enable subcommand autocorrection for git-remote and git-notesJiamu Sun, Mar 16, 2026
  68. 09/10 parseopt: add tests for subcommand autocorrectionJiamu Sun, Mar 16, 2026
  69. 10/10 doc: document autocorrect APIJiamu Sun, Mar 16, 2026
  70. 00/10 parseopt: add subcommand autocorrectionJiamu Sun, Apr 22, 2026
  71. 02/10 help: make autocorrect handling reusableJiamu Sun, Apr 22, 2026
  72. 01/10 parseopt: extract subcommand handling from parse_options_step()Jiamu Sun, Apr 22, 2026
  73. 03/10 help: move tty check for autocorrection to autocorrect.cJiamu Sun, Apr 22, 2026
  74. 04/10 autocorrect: use mode and delay instead of magic numbersJiamu Sun, Apr 22, 2026
  75. 05/10 autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINTJiamu Sun, Apr 22, 2026
  76. 06/10 autocorrect: provide config resolution APIJiamu Sun, Apr 22, 2026
  77. 07/10 parseopt: autocorrect mistyped subcommandsJiamu Sun, Apr 22, 2026
  78. 08/10 parseopt: enable subcommand autocorrection for git-remote and git-notesJiamu Sun, Apr 22, 2026
  79. 09/10 parseopt: add tests for subcommand autocorrectionJiamu Sun, Apr 22, 2026
  80. 10/10 doc: document autocorrect APIJiamu Sun, Apr 22, 2026
  81. Junio C HamanoApr 23, 2026
  82. Jiamu SunApr 23, 2026
  83. 00/10 parseopt: add subcommand autocorrectionJiamu Sun, Apr 23, 2026
  84. 01/10 parseopt: extract subcommand handling from parse_options_step()Jiamu Sun, Apr 23, 2026
  85. 02/10 help: make autocorrect handling reusableJiamu Sun, Apr 23, 2026
  86. 03/10 help: move tty check for autocorrection to autocorrect.cJiamu Sun, Apr 23, 2026
  87. 04/10 autocorrect: use mode and delay instead of magic numbersJiamu Sun, Apr 23, 2026
  88. 06/10 autocorrect: provide config resolution APIJiamu Sun, Apr 23, 2026
  89. 10/10 doc: document autocorrect APIJiamu Sun, Apr 23, 2026
  90. 05/10 autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINTJiamu Sun, Apr 23, 2026
  91. 07/10 parseopt: autocorrect mistyped subcommandsJiamu Sun, Apr 23, 2026
  92. 08/10 parseopt: enable subcommand autocorrection for git-remote and git-notesJiamu Sun, Apr 23, 2026
  93. 09/10 parseopt: add tests for subcommand autocorrectionJiamu Sun, Apr 23, 2026
  94. Junio C HamanoMay 11, 2026
  95. Jiamu SunMay 15, 2026
  96. Junio C HamanoJun 6, 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.