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

Re: [PATCH] add-patch: response to invalid option

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 16, 2024, 10:26 UTC
Message-ID
<xmqq5xwhhacm.fsf@gitster.g>
In-Reply-To
<4e2bc660-ee33-4641-aca5-783d0cefcd23@gmail.com>
Rubén Justo <rjusto@gmail.com> writes:
> When the user introduces an invalid option, we respond with the whole
> help text.
The verb "introduces" in the first sentence looked weird to me.
    add -p: require two steps to get help after mistyping an option
    During a "git add -p" session, if the user chooses an option
    that is not offered, the help text for the entire available
    choices is given.
or something, perhaps.
> Instead of displaying the long help description, display a short error
> message indicating the incorrectly introduced option with a note on how
> to get the help text.

When you wanted to 'q'uit but touched the 'w' key that sits next to it by mistake, you do not need to be told about what any of the options would do; you may want to be told "the option to quit is 'q', not 'w'", though ;-).

On the other hand, if you are truly lost and do not know what each of the listed choices mean, you'd type '?' anyway because that is one of the offered choices. So the only change needed here is to make sure that '?' is the only thing that gives the help message, and all other unrecognised option 'x' are made to say "we do not know 'x'".

That flow of thought makes sort-of sense, if the choices that are offered are too numerous (say, around a dozen or more), but with the current command set, I am not sure if this change is an improvement (note: I did not say "I do not think that"---I simply am not sure).

If we implemented the UI this way 20 years ago in the first version, perhaps we would have had happily been using it since, but given that the way we implemented the UI 20 years ago has been used happily by our users without much complaint, either way must be just fine.

Is it worth changing it at this point? Does it improve the end-user experience in any noticeable way? I do not think I can answer these two questions with confident "yes".

Show 50 quoted lines
> Signed-off-by: Rubén Justo <rjusto@gmail.com>
> ---
>  add-patch.c                |  5 ++++-
>  t/t3701-add-interactive.sh | 10 ++++++++++
>  2 files changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/add-patch.c b/add-patch.c
> index a06dd18985..c77902fec5 100644
> --- a/add-patch.c
> +++ b/add-patch.c
> @@ -1667,7 +1667,7 @@ static int patch_update_file(struct add_p_state *s,
>  			}
>  		} else if (s->answer.buf[0] == 'p') {
>  			rendered_hunk_index = -1;
> -		} else {
> +		} else if (s->answer.buf[0] == '?') {
>  			const char *p = _(help_patch_remainder), *eol = p;
>  
>  			color_fprintf(stdout, s->s.help_color, "%s",
> @@ -1691,6 +1691,9 @@ static int patch_update_file(struct add_p_state *s,
>  				color_fprintf_ln(stdout, s->s.help_color,
>  						 "%.*s", (int)(eol - p), p);
>  			}
> +		} else {
> +			err(s, _("Unknown option '%s' (use '?' for help)"),
> +			    s->answer.buf);
>  		}
>  	}
>  
> diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
> index bc55255b0a..b38fd5388a 100755
> --- a/t/t3701-add-interactive.sh
> +++ b/t/t3701-add-interactive.sh
> @@ -61,6 +61,16 @@ test_expect_success 'setup (initial)' '
>  	echo more >>file &&
>  	echo lines >>file
>  '
> +
> +test_expect_success 'invalid option' '
> +	cat >expect <<-EOF &&
> +	Unknown option ${SQ}W${SQ} (use ${SQ}?${SQ} for help)
> +	EOF
> +	test_write_lines W |
> +	git -c core.filemode=true add -p 2>actual &&
> +	test_cmp expect actual
> +'
> +
>  test_expect_success 'status works (initial)' '
>  	git add -i </dev/null >output &&
>  	grep "+1/-0 *+2/-0 file" output
Previous: phillip.wood123@gmail.comNext: Phillip Wood
Message 9 of 55 in “add-patch: response to invalid option”
  1. add-patch: response to invalid optionRubén Justo, Apr 15, 2024
  2. Patrick SteinhardtApr 16, 2024
  3. Rubén JustoApr 16, 2024
  4. phillip.wood123@gmail.comApr 16, 2024
  5. Rubén JustoApr 16, 2024
  6. phillip.wood123@gmail.comApr 17, 2024
  7. Junio C HamanoApr 17, 2024
  8. phillip.wood123@gmail.comApr 18, 2024
  9. Junio C HamanoApr 16, 2024
  10. Phillip WoodApr 16, 2024
  11. Junio C HamanoApr 16, 2024
  12. Phillip WoodApr 16, 2024
  13. Junio C HamanoApr 16, 2024
  14. Rubén JustoApr 16, 2024
  15. add-patch: response to invalid commandRubén Justo, Apr 20, 2024
  16. Junio C HamanoApr 20, 2024
  17. add-patch: response to unknown commandRubén Justo, Apr 21, 2024
  18. phillip.wood123@gmail.comApr 21, 2024
  19. Rubén JustoApr 21, 2024
  20. add-patch: response to unknown commandRubén Justo, Apr 21, 2024
  21. Junio C HamanoApr 22, 2024
  22. phillip.wood123@gmail.comApr 24, 2024
  23. Junio C HamanoApr 24, 2024
  24. Phillip WoodApr 29, 2024
  25. Junio C HamanoApr 29, 2024
  26. Jeff KingApr 25, 2024
  27. Eric SunshineApr 25, 2024
  28. Junio C HamanoApr 25, 2024
  29. Eric SunshineApr 25, 2024
  30. Junio C HamanoApr 25, 2024
  31. Junio C HamanoApr 25, 2024
  32. Rubén JustoApr 25, 2024
  33. Junio C HamanoApr 25, 2024
  34. Rubén JustoApr 25, 2024
  35. Junio C HamanoApr 26, 2024
  36. Junio C HamanoApr 26, 2024
  37. Jeff KingApr 26, 2024
  38. Rubén JustoApr 25, 2024
  39. Jeff KingApr 26, 2024
  40. Rubén JustoApr 26, 2024
  41. phillip.wood123@gmail.comApr 25, 2024
  42. 0/2 add-patch: response to unknown commandRubén Justo, Apr 29, 2024
  43. 1/2 add-patch: do not show UI messages on stderrRubén Justo, Apr 29, 2024
  44. Junio C HamanoApr 29, 2024
  45. Jeff KingApr 30, 2024
  46. Rubén JustoApr 30, 2024
  47. Junio C HamanoApr 30, 2024
  48. Junio C HamanoApr 30, 2024
  49. phillip.wood123@gmail.comApr 30, 2024
  50. Rubén JustoApr 30, 2024
  51. phillip.wood123@gmail.comMay 1, 2024
  52. Junio C HamanoMay 1, 2024
  53. Rubén JustoMay 1, 2024
  54. Junio C HamanoMay 2, 2024
  55. 2/2 add-patch: response to unknown commandRubén Justo, Apr 29, 2024

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.