Merge branch 'zh/cherry-pick-advice'

The advice message that "git cherry-pick" gives when it asks
conflicted replay of a commit to be resolved by the end user has
been updated.

* zh/cherry-pick-advice:
  cherry-pick: use better advice message
This commit is contained in:
Junio C Hamano 2021-09-10 11:46:19 -07:00
commit 173368d73d
3 changed files with 42 additions and 11 deletions

View File

@ -403,7 +403,7 @@ static void print_advice(struct repository *r, int show_hint,
char *msg = getenv("GIT_CHERRY_PICK_HELP"); char *msg = getenv("GIT_CHERRY_PICK_HELP");
if (msg) { if (msg) {
fprintf(stderr, "%s\n", msg); advise("%s\n", msg);
/* /*
* A conflict has occurred but the porcelain * A conflict has occurred but the porcelain
* (typically rebase --interactive) wants to take care * (typically rebase --interactive) wants to take care
@ -418,10 +418,22 @@ static void print_advice(struct repository *r, int show_hint,
if (opts->no_commit) if (opts->no_commit)
advise(_("after resolving the conflicts, mark the corrected paths\n" advise(_("after resolving the conflicts, mark the corrected paths\n"
"with 'git add <paths>' or 'git rm <paths>'")); "with 'git add <paths>' or 'git rm <paths>'"));
else if (opts->action == REPLAY_PICK)
advise(_("After resolving the conflicts, mark them with\n"
"\"git add/rm <pathspec>\", then run\n"
"\"git cherry-pick --continue\".\n"
"You can instead skip this commit with \"git cherry-pick --skip\".\n"
"To abort and get back to the state before \"git cherry-pick\",\n"
"run \"git cherry-pick --abort\"."));
else if (opts->action == REPLAY_REVERT)
advise(_("After resolving the conflicts, mark them with\n"
"\"git add/rm <pathspec>\", then run\n"
"\"git revert --continue\".\n"
"You can instead skip this commit with \"git revert --skip\".\n"
"To abort and get back to the state before \"git revert\",\n"
"run \"git revert --abort\"."));
else else
advise(_("after resolving the conflicts, mark the corrected paths\n" BUG("unexpected pick action in print_advice()");
"with 'git add <paths>' or 'git rm <paths>'\n"
"and commit the result with 'git commit'"));
} }
} }

View File

@ -158,4 +158,20 @@ test_expect_success 'cherry-pick works with dirty renamed file' '
grep -q "^modified$" renamed grep -q "^modified$" renamed
' '
test_expect_success 'advice from failed revert' '
test_commit --no-tag "add dream" dream dream &&
dream_oid=$(git rev-parse --short HEAD) &&
cat <<-EOF >expected &&
error: could not revert $dream_oid... add dream
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
EOF
test_commit --append --no-tag "double-add dream" dream dream &&
test_must_fail git revert HEAD^ 2>actual &&
test_cmp expected actual
'
test_done test_done

View File

@ -47,20 +47,23 @@ test_expect_success 'failed cherry-pick does not advance HEAD' '
test "$head" = "$newhead" test "$head" = "$newhead"
' '
test_expect_success 'advice from failed cherry-pick' " test_expect_success 'advice from failed cherry-pick' '
pristine_detach initial && pristine_detach initial &&
picked=\$(git rev-parse --short picked) && picked=$(git rev-parse --short picked) &&
cat <<-EOF >expected && cat <<-EOF >expected &&
error: could not apply \$picked... picked error: could not apply $picked... picked
hint: after resolving the conflicts, mark the corrected paths hint: After resolving the conflicts, mark them with
hint: with 'git add <paths>' or 'git rm <paths>' hint: "git add/rm <pathspec>", then run
hint: and commit the result with 'git commit' hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
EOF EOF
test_must_fail git cherry-pick picked 2>actual && test_must_fail git cherry-pick picked 2>actual &&
test_cmp expected actual test_cmp expected actual
" '
test_expect_success 'advice from failed cherry-pick --no-commit' " test_expect_success 'advice from failed cherry-pick --no-commit' "
pristine_detach initial && pristine_detach initial &&