Re: [PATCH 10/8] [DO NOT APPLY, but improve?] rebase--interactive: introduce "stop" command
- From
Philip Oakley <philipoakley@iee.org>
- Date
- Jan 18, 2018, 22:08 UTC
- Message-ID
- <32EA49C74ECD470F8EE898D965833E02@PhilipOakley>
- In-Reply-To
- <CA+P7+xpwYDeNHfzMtHJkKEB8-A+kZ95wBEn0RC5R8pWbgKOmiQ@mail.gmail.com>
From: "Jacob Keller" <jacob.keller@gmail.com>
Show 18 quoted lines
> On Thu, Jan 18, 2018 at 10:36 AM, Stefan Beller <sbeller@google.com> > wrote: >> Jake suggested using "x false" instead of "edit" for some corner cases. >> >> I do prefer using "x false" for all kinds of things such as stopping >> before a commit (edit only let's you stop after a commit), and the >> knowledge that "x false" does the least amount of actions behind my back. >> >> We should have that command as well, maybe? >> > > > I agree. I use "x false" very often, and I think stop is probably a > better solution since it avoids spawning an extra shell that will just > fail. Not sure if stop implies too much about "stop the whole thing" > as opposed to "stop here and let me do something manual", but I think > it's clear enough. >
'hold' or 'pause' maybe options (leads to http://www.thesaurus.com/browse/put+on+hold offering procastinate etc.) 'adjourn'.
Show 69 quoted lines
>
>> Signed-off-by: Stefan Beller <sbeller@google.com>
>> ---
>> 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
>>