mirror of
https://github.com/git/git
synced 2024-08-25 10:45:59 +00:00
rebase: add an --am option
Currently, this option doesn't do anything except error out if any options requiring the interactive-backend are also passed. However, when we make the default backend configurable later in this series, this flag will provide a way to override the config setting. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
8af14f0859
commit
52eb738d6b
|
@ -258,6 +258,13 @@ See also INCOMPATIBLE OPTIONS below.
|
|||
original branch. The index and working tree are also left
|
||||
unchanged as a result.
|
||||
|
||||
--am:
|
||||
Use git-am internally to rebase. This option may become a
|
||||
no-op in the future once the interactive backend handles
|
||||
everything the am one does.
|
||||
+
|
||||
See also INCOMPATIBLE OPTIONS below.
|
||||
|
||||
--empty={drop,keep,ask}::
|
||||
How to handle commits that are not empty to start and are not
|
||||
clean cherry-picks of any upstream commit, but which become
|
||||
|
@ -378,7 +385,7 @@ See also INCOMPATIBLE OPTIONS below.
|
|||
Ensure at least <n> lines of surrounding context match before
|
||||
and after each change. When fewer lines of surrounding
|
||||
context exist they all must match. By default no context is
|
||||
ever ignored.
|
||||
ever ignored. Implies --am.
|
||||
+
|
||||
See also INCOMPATIBLE OPTIONS below.
|
||||
|
||||
|
@ -418,6 +425,7 @@ with `--keep-base` in order to drop those commits from your branch.
|
|||
--whitespace=<option>::
|
||||
These flags are passed to the 'git apply' program
|
||||
(see linkgit:git-apply[1]) that applies the patch.
|
||||
Implies --am.
|
||||
+
|
||||
See also INCOMPATIBLE OPTIONS below.
|
||||
|
||||
|
@ -561,6 +569,7 @@ INCOMPATIBLE OPTIONS
|
|||
|
||||
The following options:
|
||||
|
||||
* --am
|
||||
* --committer-date-is-author-date
|
||||
* --ignore-date
|
||||
* --ignore-whitespace
|
||||
|
|
|
@ -1335,6 +1335,18 @@ static int can_fast_forward(struct commit *onto, struct commit *upstream,
|
|||
return res && is_linear_history(onto, head);
|
||||
}
|
||||
|
||||
static int parse_opt_am(const struct option *opt, const char *arg, int unset)
|
||||
{
|
||||
struct rebase_options *opts = opt->value;
|
||||
|
||||
BUG_ON_OPT_NEG(unset);
|
||||
BUG_ON_OPT_ARG(arg);
|
||||
|
||||
opts->type = REBASE_AM;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* -i followed by -m is still -i */
|
||||
static int parse_opt_merge(const struct option *opt, const char *arg, int unset)
|
||||
{
|
||||
|
@ -1519,6 +1531,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
|
|||
OPT_CMDMODE(0, "show-current-patch", &action,
|
||||
N_("show the patch file being applied or merged"),
|
||||
ACTION_SHOW_CURRENT_PATCH),
|
||||
{ OPTION_CALLBACK, 0, "am", &options, NULL,
|
||||
N_("use apply-mail strategies to rebase"),
|
||||
PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||
parse_opt_am },
|
||||
{ OPTION_CALLBACK, 'm', "merge", &options, NULL,
|
||||
N_("use merging strategies to rebase"),
|
||||
PARSE_OPT_NOARG | PARSE_OPT_NONEG,
|
||||
|
@ -1878,7 +1894,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
|
|||
if (isatty(2) && options.flags & REBASE_NO_QUIET)
|
||||
strbuf_addstr(&options.git_format_patch_opt, " --progress");
|
||||
|
||||
if (options.git_am_opts.argc) {
|
||||
if (options.git_am_opts.argc || options.type == REBASE_AM) {
|
||||
/* all am options except -q are compatible only with --am */
|
||||
for (i = options.git_am_opts.argc - 1; i >= 0; i--)
|
||||
if (strcmp(options.git_am_opts.argv[i], "-q"))
|
||||
|
|
Loading…
Reference in a new issue