Browse Source

Merge branch 'nd/am-quit'

"git am" has learned the "--quit" option, in addition to the existing
"--abort" option; having the pair mirrors a few other commands like
"rebase" and "cherry-pick".

* nd/am-quit:
  am: support --quit
maint
Junio C Hamano 7 years ago
parent
commit
c22c624a9d
  1. 6
      Documentation/git-am.txt
  2. 12
      builtin/am.c
  3. 2
      contrib/completion/git-completion.bash
  4. 12
      t/t4150-am.sh

6
Documentation/git-am.txt

@ -16,7 +16,7 @@ SYNOPSIS @@ -16,7 +16,7 @@ SYNOPSIS
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
[--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
[(<mbox> | <Maildir>)...]
'git am' (--continue | --skip | --abort)
'git am' (--continue | --skip | --abort | --quit)

DESCRIPTION
-----------
@ -167,6 +167,10 @@ default. You can use `--no-utf8` to override this. @@ -167,6 +167,10 @@ default. You can use `--no-utf8` to override this.
--abort::
Restore the original branch and abort the patching operation.

--quit::
Abort the patching operation but keep HEAD and the index
untouched.

DISCUSSION
----------


12
builtin/am.c

@ -2149,7 +2149,8 @@ enum resume_mode { @@ -2149,7 +2149,8 @@ enum resume_mode {
RESUME_APPLY,
RESUME_RESOLVED,
RESUME_SKIP,
RESUME_ABORT
RESUME_ABORT,
RESUME_QUIT
};

static int git_am_config(const char *k, const char *v, void *cb)
@ -2249,6 +2250,9 @@ int cmd_am(int argc, const char **argv, const char *prefix) @@ -2249,6 +2250,9 @@ int cmd_am(int argc, const char **argv, const char *prefix)
OPT_CMDMODE(0, "abort", &resume,
N_("restore the original branch and abort the patching operation."),
RESUME_ABORT),
OPT_CMDMODE(0, "quit", &resume,
N_("abort the patching operation but keep HEAD where it is."),
RESUME_QUIT),
OPT_BOOL(0, "committer-date-is-author-date",
&state.committer_date_is_author_date,
N_("lie about committer date")),
@ -2317,7 +2321,7 @@ int cmd_am(int argc, const char **argv, const char *prefix) @@ -2317,7 +2321,7 @@ int cmd_am(int argc, const char **argv, const char *prefix)
* stray directories.
*/
if (file_exists(state.dir) && !state.rebasing) {
if (resume == RESUME_ABORT) {
if (resume == RESUME_ABORT || resume == RESUME_QUIT) {
am_destroy(&state);
am_state_release(&state);
return 0;
@ -2359,6 +2363,10 @@ int cmd_am(int argc, const char **argv, const char *prefix) @@ -2359,6 +2363,10 @@ int cmd_am(int argc, const char **argv, const char *prefix)
case RESUME_ABORT:
am_abort(&state);
break;
case RESUME_QUIT:
am_rerere_clear();
am_destroy(&state);
break;
default:
die("BUG: invalid resume value");
}

2
contrib/completion/git-completion.bash

@ -1077,7 +1077,7 @@ _git_am () @@ -1077,7 +1077,7 @@ _git_am ()
{
__git_find_repo_path
if [ -d "$__git_repo_path"/rebase-apply ]; then
__gitcomp "--skip --continue --resolved --abort"
__gitcomp "--skip --continue --resolved --abort --quit"
return
fi
case "$cur" in

12
t/t4150-am.sh

@ -1045,4 +1045,16 @@ test_expect_success 'am works with multi-line in-body headers' ' @@ -1045,4 +1045,16 @@ test_expect_success 'am works with multi-line in-body headers' '
git cat-file commit HEAD | grep "^$LONG$"
'

test_expect_success 'am --quit keeps HEAD where it is' '
mkdir .git/rebase-apply &&
>.git/rebase-apply/last &&
>.git/rebase-apply/next &&
git rev-parse HEAD^ >.git/ORIG_HEAD &&
git rev-parse HEAD >expected &&
git am --quit &&
test_path_is_missing .git/rebase-apply &&
git rev-parse HEAD >actual &&
test_cmp expected actual
'

test_done

Loading…
Cancel
Save