Skip to content

Commit

Permalink
rebase: Update --empty=ask to --empty=drop
Browse files Browse the repository at this point in the history
When `git-am` got its own `--empty` option in 7c096b8 (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. This commit updates
`git-rebase` to also use `stop`, while keeping `ask` as a deprecated
synonym.

In a future commit, we'll be adding a new `--empty` option for
`git-cherry-pick` as well, making the consistency even more relevant.

Signed-off-by: Brian Lyles <[email protected]>
  • Loading branch information
zivarah committed Jan 19, 2024
1 parent 69fe94a commit f8c0fca
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 12 deletions.
8 changes: 5 additions & 3 deletions Documentation/git-rebase.txt
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ See also INCOMPATIBLE OPTIONS below.
+
See also INCOMPATIBLE OPTIONS below.

--empty=(drop|keep|ask)::
--empty=(drop|keep|stop)::
How to handle commits that are not empty to start and are not
clean cherry-picks of any upstream commit, but which become
empty after rebasing (because they contain a subset of already
Expand All @@ -300,12 +300,14 @@ See also INCOMPATIBLE OPTIONS below.
The empty commit will be dropped. This is the default behavior.
`keep`;;
The empty commit will be kept.
`ask`;;
`stop`;;
The rebase will halt when the empty 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 `--interactive` is specified.
Other options, like `--exec`, will use the default of drop unless
`-i`/`--interactive` is explicitly specified.
`ask`;;
A deprecated synonym of `stop`.
--
+
Note that commits which start empty are kept (unless `--no-keep-empty`
Expand Down Expand Up @@ -702,7 +704,7 @@ be dropped automatically with `--no-keep-empty`).
Similar to the apply backend, by default the merge backend drops
commits that become empty unless `-i`/`--interactive` is specified (in
which case it stops and asks the user what to do). The merge backend
also has an `--empty=(drop|keep|ask)` option for changing the behavior
also has an `--empty=(drop|keep|stop)` option for changing the behavior
of handling commits that become empty.

Directory rename detection
Expand Down
12 changes: 6 additions & 6 deletions builtin/rebase.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ enum empty_type {
EMPTY_UNSPECIFIED = -1,
EMPTY_DROP,
EMPTY_KEEP,
EMPTY_ASK
EMPTY_STOP
};

enum action {
Expand Down Expand Up @@ -963,10 +963,10 @@ static enum empty_type parse_empty_value(const char *value)
return EMPTY_DROP;
else if (!strcasecmp(value, "keep"))
return EMPTY_KEEP;
else if (!strcasecmp(value, "ask"))
return EMPTY_ASK;
else if (!strcasecmp(value, "stop") || !strcasecmp(value, "ask"))
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,
Expand Down Expand Up @@ -1145,7 +1145,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
"instead of ignoring them"),
1, PARSE_OPT_HIDDEN),
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"),
PARSE_OPT_NONEG, parse_opt_empty),
OPT_CALLBACK_F('k', "keep-empty", &options, NULL,
Expand Down Expand Up @@ -1562,7 +1562,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)

if (options.empty == EMPTY_UNSPECIFIED) {
if (options.flags & REBASE_INTERACTIVE_EXPLICIT)
options.empty = EMPTY_ASK;
options.empty = EMPTY_STOP;
else if (options.exec.nr > 0)
options.empty = EMPTY_KEEP;
else
Expand Down
17 changes: 14 additions & 3 deletions t/t3424-rebase-empty.sh
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,17 @@ test_expect_success 'rebase --merge --empty=keep' '
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' '
git checkout -B testing localmods &&
test_must_fail git rebase --merge --empty=ask upstream &&
Expand Down Expand Up @@ -101,9 +112,9 @@ test_expect_success 'rebase --interactive --empty=keep' '
test_cmp expect actual
'

test_expect_success 'rebase --interactive --empty=ask' '
test_expect_success 'rebase --interactive --empty=stop' '
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 &&
Expand All @@ -112,7 +123,7 @@ test_expect_success 'rebase --interactive --empty=ask' '
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 &&
test_must_fail git rebase --interactive upstream &&
Expand Down

0 comments on commit f8c0fca

Please sign in to comment.