Message ID | 20191114163549.7648-2-rybak.a.v@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | rebase --edit-todo --exec | expand |
Andrei Rybak <rybak.a.v@gmail.com> writes: > diff --git a/builtin/rebase.c b/builtin/rebase.c > index 4a20582e72..9457912f9d 100644 > --- a/builtin/rebase.c > +++ b/builtin/rebase.c > @@ -1595,6 +1595,21 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) > trace2_cmd_mode(action_names[action]); > } > > + for (i = 0; i < exec.nr; i++) > + if (check_exec_cmd(exec.items[i].string)) > + exit(1); > + > + if (exec.nr) { > + int i; This masks the outer "i" (I am assuming such a thing exists, judging from its use in the above loop you added), but I do not see a need for it. With or without this masked local "i", the value of outer "i" will be equal to exec.nr+1 after the control leaves this if block. > + imply_interactive(&options, "--exec"); > + > + strbuf_reset(&buf); > + for (i = 0; i < exec.nr; i++) > + strbuf_addf(&buf, "exec %s\n", exec.items[i].string); > + options.cmd = xstrdup(buf.buf); > + } > +
diff --git a/builtin/rebase.c b/builtin/rebase.c index 4a20582e72..9457912f9d 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -1595,6 +1595,21 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) trace2_cmd_mode(action_names[action]); } + for (i = 0; i < exec.nr; i++) + if (check_exec_cmd(exec.items[i].string)) + exit(1); + + if (exec.nr) { + int i; + + imply_interactive(&options, "--exec"); + + strbuf_reset(&buf); + for (i = 0; i < exec.nr; i++) + strbuf_addf(&buf, "exec %s\n", exec.items[i].string); + options.cmd = xstrdup(buf.buf); + } + switch (action) { case ACTION_CONTINUE: { struct object_id head; @@ -1731,10 +1746,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) } } - for (i = 0; i < exec.nr; i++) - if (check_exec_cmd(exec.items[i].string)) - exit(1); - if (!(options.flags & REBASE_NO_QUIET)) argv_array_push(&options.git_am_opts, "-q"); @@ -1746,17 +1757,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) options.gpg_sign_opt = xstrfmt("-S%s", gpg_sign); } - if (exec.nr) { - int i; - - imply_interactive(&options, "--exec"); - - strbuf_reset(&buf); - for (i = 0; i < exec.nr; i++) - strbuf_addf(&buf, "exec %s\n", exec.items[i].string); - options.cmd = xstrdup(buf.buf); - } - if (rebase_merges) { if (!*rebase_merges) ; /* default mode; do nothing */
When git rebase is started with option --exec, its arguments are parsed into string_list exec and then converted into options.cmd. In following commits, action --edit-todo will be taught to use arguments passed with --exec option. Prepare options.cmd before switch (action) to make it available for the ACTION_EDIT_TODO branch of the switch. Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com> --- builtin/rebase.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-)