Thread (287 messages) 287 messages, 11 authors, 2018-10-08

Re: [PATCH 10/8] [DO NOT APPLY, but improve?] rebase--interactive: introduce "stop" command

From: Philip Oakley <hidden>
Date: 2018-01-18 22:08:14

From: "Jacob Keller" <redacted>
On Thu, Jan 18, 2018 at 10:36 AM, Stefan Beller [off-list ref] 
wrote:
quoted
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'.
quoted
Signed-off-by: Stefan Beller <redacted>
---
 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
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help