On Mon, Dec 10, 2018 at 1:18 PM Johannes Schindelin via GitGitGadget <gitgitgadget@xxxxxxxxx> wrote: > The idea was brought up by Paul Morelle. > > To be honest, this idea of rescheduling a failed exec makes so much sense > that I wish we had done this from the get-go. > > So let's do the next best thing: implement a command-line option and a > config setting to make it so. I was a bit worried that the optics weren't good enough for recovering from a typoed exec command (or one that otherwise wouldn't be in a state the user could make pass but they wanted the rebase to continue). However, after trying it out, I found: $ git rebase --exec /bin/false --reschedule-failed-exec HEAD~1 Executing: /bin/false warning: execution failed: /bin/false You can fix the problem, and then run git rebase --continue hint: Could not execute the todo command hint: hint: exec /bin/false hint: hint: It has been rescheduled; To edit the command before continuing, please hint: edit the todo list first: hint: hint: git rebase --edit-todo hint: git rebase --continue and if the user just runs "git rebase --continue" without looking at that big hint, they'll get the hint again. When they run "git rebase --edit-todo", they see the failed command listed first and can remove that line. So, I think my initial worry was unfounded. > The obvious intent behind that config setting is to not only give users a > way to opt into that behavior already, but also to make it possible to flip > the default at a later date, after the feature has been battle-tested and > after deprecating the non-rescheduling behavior for a couple of Git > versions. > > If the team agrees with my reasoning, then the 3rd patch (introducing -y > <cmd> as a shortcut for --reschedule-failed-exec -x <cmd>) might not make > much sense, as it would introduce a short option that would become obsolete > soon. This series is awesome; thanks much to Paul for suggesting this idea. And yeah, I agree and hope the third patch won't be necessary. :-) > Johannes Schindelin (3): > rebase: introduce --reschedule-failed-exec > rebase: add a config option to default to --reschedule-failed-exec > rebase: introduce a shortcut for --reschedule-failed-exec > > Documentation/config/rebase.txt | 5 ++++ > Documentation/git-rebase.txt | 11 +++++++++ > builtin/rebase--interactive.c | 2 ++ > builtin/rebase.c | 42 ++++++++++++++++++++++++++++++++- > git-legacy-rebase.sh | 24 ++++++++++++++++++- > git-rebase--common.sh | 1 + > sequencer.c | 13 +++++++--- > sequencer.h | 1 + > t/t3418-rebase-continue.sh | 14 +++++++++++ > 9 files changed, 108 insertions(+), 5 deletions(-) > > > base-commit: a1598010f775d82b5adf12c29d0f5bc9b41434c6 > Published-As: https://github.com/gitgitgadget/git/releases/tags/pr-90%2Fdscho%2Freschedule-failed-exec-v1 > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-90/dscho/reschedule-failed-exec-v1 > Pull-Request: https://github.com/gitgitgadget/git/pull/90 > -- > gitgitgadget