pull: remove support for --rebase=preserve

In preparation for `git-rebase--preserve-merges.sh` entering its after
life, we remove this (deprecated) option that would still rely on it.

To help users transition who still did not receive the memo about the
deprecation, we offer a helpful error message instead of throwing our
hands in the air and saying that we don't know that option, never heard
of it.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Reviewed-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin 2021-09-07 21:05:05 +00:00 committed by Junio C Hamano
parent aa4df107e7
commit 52f1e82178
7 changed files with 8 additions and 23 deletions

View File

@ -85,10 +85,6 @@ When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase'
so that the local merge commits are included in the rebase (see so that the local merge commits are included in the rebase (see
linkgit:git-rebase[1] for details). linkgit:git-rebase[1] for details).
+ +
When `preserve` (or just 'p', deprecated in favor of `merges`), also pass
`--preserve-merges` along to 'git rebase' so that locally committed merge
commits will not be flattened by running 'git pull'.
+
When the value is `interactive` (or just 'i'), the rebase is run in interactive When the value is `interactive` (or just 'i'), the rebase is run in interactive
mode. mode.
+ +

View File

@ -18,10 +18,6 @@ When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase'
so that the local merge commits are included in the rebase (see so that the local merge commits are included in the rebase (see
linkgit:git-rebase[1] for details). linkgit:git-rebase[1] for details).
+ +
When `preserve` (or just 'p', deprecated in favor of `merges`), also pass
`--preserve-merges` along to 'git rebase' so that locally committed merge
commits will not be flattened by running 'git pull'.
+
When the value is `interactive` (or just 'i'), the rebase is run in interactive When the value is `interactive` (or just 'i'), the rebase is run in interactive
mode. mode.
+ +

View File

@ -102,7 +102,7 @@ Options related to merging
include::merge-options.txt[] include::merge-options.txt[]
-r:: -r::
--rebase[=false|true|merges|preserve|interactive]:: --rebase[=false|true|merges|interactive]::
When true, rebase the current branch on top of the upstream When true, rebase the current branch on top of the upstream
branch after fetching. If there is a remote-tracking branch branch after fetching. If there is a remote-tracking branch
corresponding to the upstream branch and the upstream branch corresponding to the upstream branch and the upstream branch
@ -113,10 +113,6 @@ When set to `merges`, rebase using `git rebase --rebase-merges` so that
the local merge commits are included in the rebase (see the local merge commits are included in the rebase (see
linkgit:git-rebase[1] for details). linkgit:git-rebase[1] for details).
+ +
When set to `preserve` (deprecated in favor of `merges`), rebase with the
`--preserve-merges` option passed to `git rebase` so that locally created
merge commits will not be flattened.
+
When false, merge the upstream branch into the current branch. When false, merge the upstream branch into the current branch.
+ +
When `interactive`, enable the interactive mode of rebase. When `interactive`, enable the interactive mode of rebase.

View File

@ -30,9 +30,8 @@
/** /**
* Parses the value of --rebase. If value is a false value, returns * Parses the value of --rebase. If value is a false value, returns
* REBASE_FALSE. If value is a true value, returns REBASE_TRUE. If value is * REBASE_FALSE. If value is a true value, returns REBASE_TRUE. If value is
* "merges", returns REBASE_MERGES. If value is "preserve", returns * "merges", returns REBASE_MERGES. If value is a invalid value, dies with
* REBASE_PRESERVE. If value is a invalid value, dies with a fatal error if * a fatal error if fatal is true, otherwise returns REBASE_INVALID.
* fatal is true, otherwise returns REBASE_INVALID.
*/ */
static enum rebase_type parse_config_rebase(const char *key, const char *value, static enum rebase_type parse_config_rebase(const char *key, const char *value,
int fatal) int fatal)
@ -126,7 +125,7 @@ static struct option pull_options[] = {
/* Options passed to git-merge or git-rebase */ /* Options passed to git-merge or git-rebase */
OPT_GROUP(N_("Options related to merging")), OPT_GROUP(N_("Options related to merging")),
OPT_CALLBACK_F('r', "rebase", &opt_rebase, OPT_CALLBACK_F('r', "rebase", &opt_rebase,
"(false|true|merges|preserve|interactive)", "(false|true|merges|interactive)",
N_("incorporate changes by rebasing rather than merging"), N_("incorporate changes by rebasing rather than merging"),
PARSE_OPT_OPTARG, parse_opt_rebase), PARSE_OPT_OPTARG, parse_opt_rebase),
OPT_PASSTHRU('n', NULL, &opt_diffstat, NULL, OPT_PASSTHRU('n', NULL, &opt_diffstat, NULL,
@ -883,8 +882,6 @@ static int run_rebase(const struct object_id *newbase,
/* Options passed to git-rebase */ /* Options passed to git-rebase */
if (opt_rebase == REBASE_MERGES) if (opt_rebase == REBASE_MERGES)
strvec_push(&args, "--rebase-merges"); strvec_push(&args, "--rebase-merges");
else if (opt_rebase == REBASE_PRESERVE)
strvec_push(&args, "--preserve-merges");
else if (opt_rebase == REBASE_INTERACTIVE) else if (opt_rebase == REBASE_INTERACTIVE)
strvec_push(&args, "--interactive"); strvec_push(&args, "--interactive");
if (opt_diffstat) if (opt_diffstat)

View File

@ -2543,7 +2543,7 @@ __git_complete_config_variable_value ()
return return
;; ;;
branch.*.rebase) branch.*.rebase)
__gitcomp "false true merges preserve interactive" "" "$cur_" __gitcomp "false true merges interactive" "" "$cur_"
return return
;; ;;
remote.pushdefault) remote.pushdefault)

View File

@ -1,5 +1,6 @@
#include "rebase.h" #include "rebase.h"
#include "config.h" #include "config.h"
#include "gettext.h"
/* /*
* Parses textual value for pull.rebase, branch.<name>.rebase, etc. * Parses textual value for pull.rebase, branch.<name>.rebase, etc.
@ -20,12 +21,12 @@ enum rebase_type rebase_parse_value(const char *value)
return REBASE_FALSE; return REBASE_FALSE;
else if (v > 0) else if (v > 0)
return REBASE_TRUE; return REBASE_TRUE;
else if (!strcmp(value, "preserve") || !strcmp(value, "p"))
return REBASE_PRESERVE;
else if (!strcmp(value, "merges") || !strcmp(value, "m")) else if (!strcmp(value, "merges") || !strcmp(value, "m"))
return REBASE_MERGES; return REBASE_MERGES;
else if (!strcmp(value, "interactive") || !strcmp(value, "i")) else if (!strcmp(value, "interactive") || !strcmp(value, "i"))
return REBASE_INTERACTIVE; return REBASE_INTERACTIVE;
else if (!strcmp(value, "preserve") || !strcmp(value, "p"))
error(_("%s: 'preserve' superseded by 'merges'"), value);
/* /*
* Please update _git_config() in git-completion.bash when you * Please update _git_config() in git-completion.bash when you
* add new rebase modes. * add new rebase modes.

View File

@ -5,7 +5,6 @@ enum rebase_type {
REBASE_INVALID = -1, REBASE_INVALID = -1,
REBASE_FALSE = 0, REBASE_FALSE = 0,
REBASE_TRUE, REBASE_TRUE,
REBASE_PRESERVE,
REBASE_MERGES, REBASE_MERGES,
REBASE_INTERACTIVE REBASE_INTERACTIVE
}; };