rebase: update `--empty=ask` to `--empty=stop`
When git-am(1) got its own `--empty` option in 7c096b8d61
(am: support
--empty=<option> to handle empty patches, 2021-12-09), `stop` was used
instead of `ask`. `stop` is a more accurate term for describing what
really happens, and consistency is good.
Update git-rebase(1) to also use `stop`, while keeping `ask` as a
deprecated synonym. Update the tests to primarily use `stop`, but also
ensure that `ask` is still allowed.
In a future commit, we'll be adding a new `--empty` option for
git-cherry-pick(1) as well, making the consistency even more relevant.
Reported-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Brian Lyles <brianmlyles@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
parent
64a443efe4
commit
c282eba2d5
|
@ -289,23 +289,24 @@ See also INCOMPATIBLE OPTIONS below.
|
||||||
+
|
+
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
See also INCOMPATIBLE OPTIONS below.
|
||||||
|
|
||||||
--empty=(ask|drop|keep)::
|
--empty=(drop|keep|stop)::
|
||||||
How to handle commits that are not empty to start and are not
|
How to handle commits that are not empty to start and are not
|
||||||
clean cherry-picks of any upstream commit, but which become
|
clean cherry-picks of any upstream commit, but which become
|
||||||
empty after rebasing (because they contain a subset of already
|
empty after rebasing (because they contain a subset of already
|
||||||
upstream changes):
|
upstream changes):
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
`ask`;;
|
|
||||||
The rebase will halt when the commit is applied, allowing you to
|
|
||||||
choose whether to drop it, edit files more, or just commit the empty
|
|
||||||
changes. This option is implied when `-i`/`--interactive` is
|
|
||||||
specified.
|
|
||||||
`drop`;;
|
`drop`;;
|
||||||
The commit will be dropped. This is the default behavior.
|
The commit will be dropped. This is the default behavior.
|
||||||
`keep`;;
|
`keep`;;
|
||||||
The commit will be kept. This option is implied when `--exec` is
|
The commit will be kept. This option is implied when `--exec` is
|
||||||
specified unless `-i`/`--interactive` is also specified.
|
specified unless `-i`/`--interactive` is also specified.
|
||||||
|
`stop`;;
|
||||||
|
`ask`;;
|
||||||
|
The rebase will halt when the commit is applied, allowing you to
|
||||||
|
choose whether to drop it, edit files more, or just commit the empty
|
||||||
|
changes. This option is implied when `-i`/`--interactive` is
|
||||||
|
specified. `ask` is a deprecated synonym of `stop`.
|
||||||
--
|
--
|
||||||
+
|
+
|
||||||
Note that commits which start empty are kept (unless `--no-keep-empty`
|
Note that commits which start empty are kept (unless `--no-keep-empty`
|
||||||
|
@ -711,7 +712,7 @@ be dropped automatically with `--no-keep-empty`).
|
||||||
Similar to the apply backend, by default the merge backend drops
|
Similar to the apply backend, by default the merge backend drops
|
||||||
commits that become empty unless `-i`/`--interactive` is specified (in
|
commits that become empty unless `-i`/`--interactive` is specified (in
|
||||||
which case it stops and asks the user what to do). The merge backend
|
which case it stops and asks the user what to do). The merge backend
|
||||||
also has an `--empty=(ask|drop|keep)` option for changing the behavior
|
also has an `--empty=(drop|keep|stop)` option for changing the behavior
|
||||||
of handling commits that become empty.
|
of handling commits that become empty.
|
||||||
|
|
||||||
Directory rename detection
|
Directory rename detection
|
||||||
|
|
|
@ -58,7 +58,7 @@ enum empty_type {
|
||||||
EMPTY_UNSPECIFIED = -1,
|
EMPTY_UNSPECIFIED = -1,
|
||||||
EMPTY_DROP,
|
EMPTY_DROP,
|
||||||
EMPTY_KEEP,
|
EMPTY_KEEP,
|
||||||
EMPTY_ASK
|
EMPTY_STOP
|
||||||
};
|
};
|
||||||
|
|
||||||
enum action {
|
enum action {
|
||||||
|
@ -951,10 +951,14 @@ static enum empty_type parse_empty_value(const char *value)
|
||||||
return EMPTY_DROP;
|
return EMPTY_DROP;
|
||||||
else if (!strcasecmp(value, "keep"))
|
else if (!strcasecmp(value, "keep"))
|
||||||
return EMPTY_KEEP;
|
return EMPTY_KEEP;
|
||||||
else if (!strcasecmp(value, "ask"))
|
else if (!strcasecmp(value, "stop"))
|
||||||
return EMPTY_ASK;
|
return EMPTY_STOP;
|
||||||
|
else if (!strcasecmp(value, "ask")) {
|
||||||
|
warning(_("--empty=ask is deprecated; use '--empty=stop' instead."));
|
||||||
|
return EMPTY_STOP;
|
||||||
|
}
|
||||||
|
|
||||||
die(_("unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"ask\"."), value);
|
die(_("unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and \"stop\"."), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int parse_opt_keep_empty(const struct option *opt, const char *arg,
|
static int parse_opt_keep_empty(const struct option *opt, const char *arg,
|
||||||
|
@ -1133,7 +1137,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
|
||||||
"instead of ignoring them"),
|
"instead of ignoring them"),
|
||||||
1, PARSE_OPT_HIDDEN),
|
1, PARSE_OPT_HIDDEN),
|
||||||
OPT_RERERE_AUTOUPDATE(&options.allow_rerere_autoupdate),
|
OPT_RERERE_AUTOUPDATE(&options.allow_rerere_autoupdate),
|
||||||
OPT_CALLBACK_F(0, "empty", &options, "(drop|keep|ask)",
|
OPT_CALLBACK_F(0, "empty", &options, "(drop|keep|stop)",
|
||||||
N_("how to handle commits that become empty"),
|
N_("how to handle commits that become empty"),
|
||||||
PARSE_OPT_NONEG, parse_opt_empty),
|
PARSE_OPT_NONEG, parse_opt_empty),
|
||||||
OPT_CALLBACK_F('k', "keep-empty", &options, NULL,
|
OPT_CALLBACK_F('k', "keep-empty", &options, NULL,
|
||||||
|
@ -1550,7 +1554,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
|
||||||
|
|
||||||
if (options.empty == EMPTY_UNSPECIFIED) {
|
if (options.empty == EMPTY_UNSPECIFIED) {
|
||||||
if (options.flags & REBASE_INTERACTIVE_EXPLICIT)
|
if (options.flags & REBASE_INTERACTIVE_EXPLICIT)
|
||||||
options.empty = EMPTY_ASK;
|
options.empty = EMPTY_STOP;
|
||||||
else if (options.exec.nr > 0)
|
else if (options.exec.nr > 0)
|
||||||
options.empty = EMPTY_KEEP;
|
options.empty = EMPTY_KEEP;
|
||||||
else
|
else
|
||||||
|
|
|
@ -72,6 +72,17 @@ test_expect_success 'rebase --merge --empty=keep' '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'rebase --merge --empty=stop' '
|
||||||
|
git checkout -B testing localmods &&
|
||||||
|
test_must_fail git rebase --merge --empty=stop upstream &&
|
||||||
|
|
||||||
|
git rebase --skip &&
|
||||||
|
|
||||||
|
test_write_lines D C B A >expect &&
|
||||||
|
git log --format=%s >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'rebase --merge --empty=ask' '
|
test_expect_success 'rebase --merge --empty=ask' '
|
||||||
git checkout -B testing localmods &&
|
git checkout -B testing localmods &&
|
||||||
test_must_fail git rebase --merge --empty=ask upstream &&
|
test_must_fail git rebase --merge --empty=ask upstream &&
|
||||||
|
@ -101,9 +112,9 @@ test_expect_success 'rebase --interactive --empty=keep' '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'rebase --interactive --empty=ask' '
|
test_expect_success 'rebase --interactive --empty=stop' '
|
||||||
git checkout -B testing localmods &&
|
git checkout -B testing localmods &&
|
||||||
test_must_fail git rebase --interactive --empty=ask upstream &&
|
test_must_fail git rebase --interactive --empty=stop upstream &&
|
||||||
|
|
||||||
git rebase --skip &&
|
git rebase --skip &&
|
||||||
|
|
||||||
|
@ -112,7 +123,7 @@ test_expect_success 'rebase --interactive --empty=ask' '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'rebase --interactive uses default of --empty=ask' '
|
test_expect_success 'rebase --interactive uses default of --empty=stop' '
|
||||||
git checkout -B testing localmods &&
|
git checkout -B testing localmods &&
|
||||||
test_must_fail git rebase --interactive upstream &&
|
test_must_fail git rebase --interactive upstream &&
|
||||||
|
|
||||||
|
@ -194,9 +205,9 @@ test_expect_success 'rebase --exec uses default of --empty=keep' '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'rebase --exec --empty=ask' '
|
test_expect_success 'rebase --exec --empty=stop' '
|
||||||
git checkout -B testing localmods &&
|
git checkout -B testing localmods &&
|
||||||
test_must_fail git rebase --exec "true" --empty=ask upstream &&
|
test_must_fail git rebase --exec "true" --empty=stop upstream &&
|
||||||
|
|
||||||
git rebase --skip &&
|
git rebase --skip &&
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue