mirror of
https://github.com/git/git.git
synced 2024-11-08 15:19:28 +01:00
Merge branch 'rj/add-p-typo-reaction'
When the user responds to a prompt given by "git add -p" with an unsupported command, list of available commands were given, which was too much if the user knew what they wanted to type but merely made a typo. Now the user gets a much shorter error message. * rj/add-p-typo-reaction: add-patch: response to unknown command add-patch: do not show UI messages on stderr
This commit is contained in:
commit
80dbfac2aa
18
add-patch.c
18
add-patch.c
@ -293,10 +293,9 @@ static void err(struct add_p_state *s, const char *fmt, ...)
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
fputs(s->s.error_color, stderr);
|
||||
vfprintf(stderr, fmt, args);
|
||||
fputs(s->s.reset_color, stderr);
|
||||
fputc('\n', stderr);
|
||||
fputs(s->s.error_color, stdout);
|
||||
vprintf(fmt, args);
|
||||
puts(s->s.reset_color);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
@ -1326,7 +1325,7 @@ static int apply_for_checkout(struct add_p_state *s, struct strbuf *diff,
|
||||
err(s, _("Nothing was applied.\n"));
|
||||
} else
|
||||
/* As a last resort, show the diff to the user */
|
||||
fwrite(diff->buf, diff->len, 1, stderr);
|
||||
fwrite(diff->buf, diff->len, 1, stdout);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1668,7 +1667,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",
|
||||
@ -1692,6 +1691,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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1778,9 +1780,9 @@ int run_add_p(struct repository *r, enum add_p_mode mode,
|
||||
break;
|
||||
|
||||
if (s.file_diff_nr == 0)
|
||||
fprintf(stderr, _("No changes.\n"));
|
||||
err(&s, _("No changes."));
|
||||
else if (binary_count == s.file_diff_nr)
|
||||
fprintf(stderr, _("Only binary files changed.\n"));
|
||||
err(&s, _("Only binary files changed."));
|
||||
|
||||
add_p_state_clear(&s);
|
||||
return 0;
|
||||
|
@ -8,6 +8,8 @@ TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
. "$TEST_DIRECTORY"/lib-terminal.sh
|
||||
|
||||
SP=" "
|
||||
|
||||
diff_cmp () {
|
||||
for x
|
||||
do
|
||||
@ -45,17 +47,30 @@ test_expect_success 'warn about add.interactive.useBuiltin' '
|
||||
cat >expect <<-\EOF &&
|
||||
warning: the add.interactive.useBuiltin setting has been removed!
|
||||
See its entry in '\''git help config'\'' for details.
|
||||
No changes.
|
||||
EOF
|
||||
echo "No changes." >expect.out &&
|
||||
|
||||
for v in = =true =false
|
||||
do
|
||||
git -c "add.interactive.useBuiltin$v" add -p >out 2>actual &&
|
||||
test_must_be_empty out &&
|
||||
test_cmp expect.out out &&
|
||||
test_cmp expect actual || return 1
|
||||
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 &&
|
||||
@ -232,7 +247,6 @@ test_expect_success 'setup file' '
|
||||
'
|
||||
|
||||
test_expect_success 'setup patch' '
|
||||
SP=" " &&
|
||||
NULL="" &&
|
||||
cat >patch <<-EOF
|
||||
@@ -1,4 +1,4 @@
|
||||
@ -335,13 +349,13 @@ test_expect_success 'different prompts for mode change/deleted' '
|
||||
|
||||
test_expect_success 'correct message when there is nothing to do' '
|
||||
git reset --hard &&
|
||||
git add -p 2>err &&
|
||||
test_grep "No changes" err &&
|
||||
git add -p >out &&
|
||||
test_grep "No changes" out &&
|
||||
printf "\\0123" >binary &&
|
||||
git add binary &&
|
||||
printf "\\0abc" >binary &&
|
||||
git add -p 2>err &&
|
||||
test_grep "Only binary files changed" err
|
||||
git add -p >out &&
|
||||
test_grep "Only binary files changed" out
|
||||
'
|
||||
|
||||
test_expect_success 'setup again' '
|
||||
|
Loading…
Reference in New Issue
Block a user