git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Rubén Justo" <rjusto@gmail.com>
Cc: Git List <git@vger.kernel.org>,
	 Phillip Wood <phillip.wood@dunelm.org.uk>,
	 Patrick Steinhardt <ps@pks.im>
Subject: Re: [PATCH v2] add-patch: response to invalid command
Date: Sat, 20 Apr 2024 10:53:45 -0700	[thread overview]
Message-ID: <xmqqr0ez3opi.fsf@gitster.g> (raw)
In-Reply-To: <6d421c67-9e10-4a7b-9782-38ba8e9da915@gmail.com> ("Rubén Justo"'s message of "Sat, 20 Apr 2024 13:08:14 +0200")

Rubén Justo <rjusto@gmail.com> writes:

> When the user enters an invalid command, we respond with a list of
> accepted commands; the response we give to the command '?'.

I am guessing that you want to say with the part of the sentence
after the semicolon that the list of accepted commands and the
explanation for them is the same as what we give when the user asks
'?', but that is after reading the above twice.  I wonder

    When the user gives an unknown command to the "add -p" prompt,
    the list of accepted commands with their explanation is given.
    This is the same output they get when they say `?`.

is easier to understand?

> However, the invalid command may be due to either a user input error or
> a malfunctioning interface component, rather than the user not knowing
> the valid command.

I am not sure readers would understand what you are trying to refer
to with "or a malfunctioning interface component".  I don't, at
least.  Either rewrite it to be understandable, or drop it.  I think
dropping it is sufficient in this case.

> Our response is unlikely to provide help in such situations.
>
> To reduce the likelihood of user confusion and error repetition, if an
> unrecognized command is received, stop displaying the help text and
> display a short error message with the invalid command received, as
> feedback to the user.

"stop ... text and" -> "instead of ... text,"

It would give a better contrast between the current UI and the
proposed new one.

> Include a reminder about the current command '?' in the new message, to
> guide the user if they want help.

OK.

> diff --git a/add-patch.c b/add-patch.c
> index a06dd18985..7be142d448 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 command '%s' (use '?' for help)"),
> +			    s->answer.buf);
>  		}
>  	}

Looking good.

> diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
> index bc55255b0a..4c3901de17 100755
> --- a/t/t3701-add-interactive.sh
> +++ b/t/t3701-add-interactive.sh
> @@ -7,6 +7,8 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
>  . ./test-lib.sh
>  . "$TEST_DIRECTORY"/lib-terminal.sh
>  
> +SP=" "

Good to see what is already used in the existing tests reused.

>  diff_cmp () {
>  	for x
>  	do
> @@ -61,6 +63,26 @@ test_expect_success 'setup (initial)' '
>  	echo more >>file &&
>  	echo lines >>file
>  '
> +
> +test_expect_success 'unknown command' '
> +	test_when_finished "git reset command && rm command" &&

Generally, use of && in test_when_finished is a contradiction.  Even
if other things fail, you want "command" to be gone befor ethe next
step, and that is why you use test_when_finished to arrange it to be
cleaned.  Similarly, even if "git reset command" fails here, you
would want command to be cleaned.

What is the expected state of the test repository before we start
this test?  If it is that "git status -uno" would be silent (i.e.,
no paths known to the index and the HEAD are modified in the index
or in the working tree, but there may be random untracked cruft left
in the working tree, like "expect" and stuff), then it makes more
sense to make it easier to read that expectation by doing

	test_when_finished "git reset --hard; rm -f command"

here.  Instead of pretending that we care about making the minimum
damage by selectively resetting the index, we make it clear that we
are giving the _next_ test a pristine state of the index and the
working tree as we inherited from the previous test.

> +	echo W >command &&
> +	git add -N command &&
> +	cat >expect <<-EOF &&
> +	diff --git a/command b/command
> +	new file mode 100644
> +	index 0000000..a42d8ff
> +	--- /dev/null
> +	+++ b/command
> +	@@ -0,0 +1 @@
> +	+W
> +	(1/1) Stage addition [y,n,q,a,d,e,p,?]? Unknown command ${SQ}W${SQ} (use ${SQ}?${SQ} for help)
> +	(1/1) Stage addition [y,n,q,a,d,e,p,?]?$SP
> +	EOF
> +	git add -p -- command <command >actual 2>&1 &&
> +	test_cmp expect actual
> +'
> +
>  test_expect_success 'status works (initial)' '
>  	git add -i </dev/null >output &&
>  	grep "+1/-0 *+2/-0 file" output
> @@ -231,7 +253,6 @@ test_expect_success 'setup file' '
>  '
>  
>  test_expect_success 'setup patch' '
> -	SP=" " &&
>  	NULL="" &&
>  	cat >patch <<-EOF
>  	@@ -1,4 +1,4 @@

Otherwise, looking very good.
Will queue.

Thanks.


  reply	other threads:[~2024-04-20 17:54 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-15 19:00 [PATCH] add-patch: response to invalid option Rubén Justo
2024-04-16  5:51 ` Patrick Steinhardt
2024-04-16 19:11   ` Rubén Justo
2024-04-16  9:41 ` phillip.wood123
2024-04-16 19:24   ` Rubén Justo
2024-04-17  9:37     ` phillip.wood123
2024-04-17 15:05       ` Junio C Hamano
2024-04-18 15:11         ` phillip.wood123
2024-04-16 10:26 ` Junio C Hamano
2024-04-16 13:56   ` Phillip Wood
2024-04-16 15:22     ` Junio C Hamano
2024-04-16 15:46       ` Phillip Wood
2024-04-16 16:10         ` Junio C Hamano
2024-04-16 19:31   ` Rubén Justo
2024-04-20 11:08 ` [PATCH v2] add-patch: response to invalid command Rubén Justo
2024-04-20 17:53   ` Junio C Hamano [this message]
2024-04-21  9:51   ` [PATCH v3] add-patch: response to unknown command Rubén Justo
2024-04-21 13:18     ` phillip.wood123
2024-04-21 19:37       ` Rubén Justo
2024-04-21 21:52     ` [PATCH v4] " Rubén Justo
2024-04-22 15:50       ` Junio C Hamano
2024-04-24 10:15         ` phillip.wood123
2024-04-24 15:35           ` Junio C Hamano
2024-04-29  9:48             ` Phillip Wood
2024-04-29 16:09               ` Junio C Hamano
2024-04-25  1:44       ` Jeff King
2024-04-25  2:15         ` Eric Sunshine
2024-04-25 20:23           ` Junio C Hamano
2024-04-25 21:00             ` Eric Sunshine
2024-04-25 21:13               ` Junio C Hamano
2024-04-25 21:05             ` Junio C Hamano
2024-04-25 22:09               ` Rubén Justo
2024-04-25 22:16                 ` Junio C Hamano
2024-04-25 23:46                   ` Rubén Justo
2024-04-26  5:39                     ` Junio C Hamano
2024-04-26 16:26                     ` Junio C Hamano
2024-04-26 20:21           ` Jeff King
2024-04-25  3:04         ` Rubén Justo
2024-04-26 20:23           ` Jeff King
2024-04-26 20:41             ` Rubén Justo
2024-04-25  8:53         ` phillip.wood123
2024-04-29 18:35       ` [PATCH v5 0/2] " Rubén Justo
2024-04-29 18:37         ` [PATCH v5 1/2] add-patch: do not show UI messages on stderr Rubén Justo
2024-04-29 19:24           ` Junio C Hamano
2024-04-30 10:52             ` Jeff King
2024-04-30 16:35               ` Rubén Justo
2024-04-30 17:17                 ` Junio C Hamano
2024-04-30 17:11               ` Junio C Hamano
2024-04-30 14:47           ` phillip.wood123
2024-04-30 16:38             ` Rubén Justo
2024-05-01 15:39               ` phillip.wood123
2024-05-01 16:14                 ` Junio C Hamano
2024-05-01 21:13                   ` Rubén Justo
2024-05-02 16:38                     ` Junio C Hamano
2024-04-29 18:37         ` [PATCH v5 2/2] add-patch: response to unknown command Rubén Justo

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=xmqqr0ez3opi.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=phillip.wood@dunelm.org.uk \
    --cc=ps@pks.im \
    --cc=rjusto@gmail.com \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).