aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRubén Justo <rjusto@gmail.com>2024-04-29 20:37:12 +0200
committerJunio C Hamano <gitster@pobox.com>2024-04-30 12:02:50 -0700
commit26998ed2a2ed2e36103da7131e44cd6a0c8d4565 (patch)
tree2eb6d3cd287a6cc725d5df6f0a0215ef3a3be797
parent9d225b025d96d37e8c914646c54cfa9fb5f52b80 (diff)
downloadgit-26998ed2a2ed2e36103da7131e44cd6a0c8d4565.tar.gz
add-patch: response to unknown command
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 '?'. However, the unknown command may be due to a user input error rather than the user not knowing the valid command. To reduce the likelihood of user confusion and error repetition, instead of displaying the list of accepted commands, display a short error message with the unknown command received, as feedback to the user. Include a reminder about the current command '?' in the new message, to guide the user if they want help. Signed-off-by: Rubén Justo <rjusto@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--add-patch.c5
-rwxr-xr-xt/t3701-add-interactive.sh16
2 files changed, 19 insertions, 2 deletions
diff --git a/add-patch.c b/add-patch.c
index 43abd57ef6..85c4770572 100644
--- a/add-patch.c
+++ b/add-patch.c
@@ -1666,7 +1666,7 @@ soft_increment:
}
} 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",
@@ -1690,6 +1690,9 @@ soft_increment:
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);
}
}
diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index 4d4eaca9a1..e9b3b28761 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=" "
+
diff_cmp () {
for x
do
@@ -55,6 +57,19 @@ test_expect_success 'warn about add.interactive.useBuiltin' '
done
'
+test_expect_success 'unknown command' '
+ test_when_finished "git reset --hard; rm -f command" &&
+ echo W >command &&
+ git add -N command &&
+ git diff command >expect &&
+ cat >>expect <<-EOF &&
+ (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 'setup (initial)' '
echo content >file &&
git add file &&
@@ -231,7 +246,6 @@ test_expect_success 'setup file' '
'
test_expect_success 'setup patch' '
- SP=" " &&
NULL="" &&
cat >patch <<-EOF
@@ -1,4 +1,4 @@