Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx>
---
git-rebase--interactive.sh | 1 +
sequencer.c | 10 ++++++++++
2 files changed, 11 insertions(+)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 3cd7446d0b..9eac53f0c5 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -166,6 +166,7 @@ l, label <label>= label current HEAD with a name
t, reset <label> = reset HEAD to a label
b, bud = reset HEAD to the revision labeled 'onto', no arguments
m, merge [<label-or-commit>]* = create a merge commit using a given
commit's message
+y, stay = stop for shortcut for
These lines can be re-ordered; they are executed from top to bottom.
" | git stripspace --comment-lines >>"$todo"
diff --git a/sequencer.c b/sequencer.c
index 2b4e6b1232..4b3b9fe59d 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -782,6 +782,7 @@ enum todo_command {
TODO_RESET,
TODO_BUD,
TODO_MERGE,
+ TODO_STOP,
/* commands that do nothing but are counted for reporting
progress */
TODO_NOOP,
TODO_DROP,
@@ -803,6 +804,7 @@ static struct {
{ 'l', "label" },
{ 't', "reset" },
{ 'b', "bud" },
+ { 'y', "stay" },
{ 'm', "merge" },
{ 0, "noop" },
{ 'd', "drop" },
@@ -1307,6 +1309,12 @@ static int parse_insn_line(struct todo_item *item,
const char *bol, char *eol)
return 0;
}
+ if (item->command == TODO_STOP) {
+ item->commit = NULL;
+ item->arg = "";
+ item->arg_len = 0;
+ }
+
end_of_object_name = (char *) bol + strcspn(bol, " \t\n");
item->arg = end_of_object_name + strspn(end_of_object_name, "
\t");
item->arg_len = (int)(eol - item->arg);
@@ -2407,6 +2415,8 @@ static int pick_commits(struct todo_list
*todo_list, struct replay_opts *opts)
/* `current` will be incremented below */
todo_list->current = -1;
}
+ } else if (item->command == TODO_STOP) {
+ todo_list->current = -1;
} else if (item->command == TODO_LABEL)
res = do_label(item->arg, item->arg_len);
else if (item->command == TODO_RESET)
--
2.16.0.rc1.238.g530d649a79-goog