Hi Elijah, On Mon, 21 Jan 2019, Johannes Schindelin wrote: > On Tue, 11 Dec 2018, Elijah Newren wrote: > > > Differences since v3 (full range-diff below): > > - Fixed the redundant "fatal: error:" error message prefixes, as pointed > > out by Duy > > - Rebased on 2.20.0 > > - Fixed the "comptable" tyop > > This, and the range-diff, look reasonable to me. And now that I looked through all 8 patches, those look reasonable to me, too. I think this is ready for `next`. Ciao, Dscho > > Thanks, > Dscho > > > Elijah Newren (8): > > rebase: make builtin and legacy script error messages the same > > rebase: fix incompatible options error message > > t5407: add a test demonstrating how interactive handles --skip > > differently > > am, rebase--merge: do not overlook --skip'ed commits with post-rewrite > > git-rebase, sequencer: extend --quiet option for the interactive > > machinery > > git-legacy-rebase: simplify unnecessary triply-nested if > > rebase: define linearization ordering and enforce it > > rebase: Implement --merge via the interactive machinery > > > > .gitignore | 1 - > > Documentation/git-rebase.txt | 17 +--- > > Makefile | 1 - > > builtin/am.c | 9 ++ > > builtin/rebase.c | 30 ++---- > > git-legacy-rebase.sh | 65 ++++++------ > > git-rebase--am.sh | 2 +- > > git-rebase--common.sh | 2 +- > > git-rebase--merge.sh | 164 ------------------------------ > > sequencer.c | 23 +++-- > > sequencer.h | 1 + > > t/t3406-rebase-message.sh | 7 +- > > t/t3420-rebase-autostash.sh | 78 ++------------ > > t/t3421-rebase-topology-linear.sh | 10 +- > > t/t3425-rebase-topology-merges.sh | 15 ++- > > t/t5407-post-rewrite-hook.sh | 34 +++++++ > > t/t9903-bash-prompt.sh | 2 +- > > 17 files changed, 121 insertions(+), 340 deletions(-) > > delete mode 100644 git-rebase--merge.sh > > > > Range-diff: > > -: ---------- > 1: 2e8b1bcb8b rebase: make builtin and legacy script error messages the same > > 1: 2f4bdd1980 ! 2: eba87828c6 rebase: fix incompatible options error message > > @@ -9,12 +9,12 @@ > > understood by separate backends were used: > > > > $ git rebase --keep --ignore-whitespace > > - fatal: error: cannot combine interactive options (--interactive, --exec, > > + fatal: cannot combine interactive options (--interactive, --exec, > > --rebase-merges, --preserve-merges, --keep-empty, --root + --onto) with > > am options (.git/rebase-apply/applying) > > > > $ git rebase --merge --ignore-whitespace > > - fatal: error: cannot combine merge options (--merge, --strategy, > > + fatal: cannot combine merge options (--merge, --strategy, > > --strategy-option) with am options (.git/rebase-apply/applying) > > > > Note that in both cases, the list of "am options" is > > @@ -33,18 +33,17 @@ > > break; > > > > if (is_interactive(&options) && i >= 0) > > -- die(_("error: cannot combine interactive options " > > +- die(_("cannot combine interactive options " > > - "(--interactive, --exec, --rebase-merges, " > > - "--preserve-merges, --keep-empty, --root + " > > - "--onto) with am options (%s)"), buf.buf); > > -+ die(_("error: cannot combine am options " > > ++ die(_("cannot combine am options " > > + "with interactive options")); > > if (options.type == REBASE_MERGE && i >= 0) > > -- die(_("error: cannot combine merge options (--merge, " > > +- die(_("cannot combine merge options (--merge, " > > - "--strategy, --strategy-option) with am options " > > - "(%s)"), buf.buf); > > -+ die(_("error: cannot combine am options " > > -+ "with merge options ")); > > ++ die(_("cannot combine am options with merge options ")); > > } > > > > if (options.signoff) { > > @@ -56,15 +55,15 @@ > > then > > if test -n "$incompatible_opts" > > then > > -- die "$(gettext "error: cannot combine interactive options (--interactive, --exec, --rebase-merges, --preserve-merges, --keep-empty, --root + --onto) with am options ($incompatible_opts)")" > > -+ die "$(gettext "error: cannot combine am options with interactive options")" > > +- die "$(gettext "fatal: cannot combine interactive options (--interactive, --exec, --rebase-merges, --preserve-merges, --keep-empty, --root + --onto) with am options ($incompatible_opts)")" > > ++ die "$(gettext "fatal: cannot combine am options with interactive options")" > > fi > > fi > > if test -n "$do_merge"; then > > if test -n "$incompatible_opts" > > then > > -- die "$(gettext "error: cannot combine merge options (--merge, --strategy, --strategy-option) with am options ($incompatible_opts)")" > > -+ die "$(gettext "error: cannot combine am options with merge options")" > > +- die "$(gettext "fatal: cannot combine merge options (--merge, --strategy, --strategy-option) with am options ($incompatible_opts)")" > > ++ die "$(gettext "fatal: cannot combine am options with merge options")" > > fi > > fi > > fi > > 2: cc33a8ccc1 = 3: 15d929edb2 t5407: add a test demonstrating how interactive handles --skip differently > > 3: f5838ef763 = 4: c9d6d5141e am, rebase--merge: do not overlook --skip'ed commits with post-rewrite > > 4: 50dc863d9f = 5: 0b19ad8e2d git-rebase, sequencer: extend --quiet option for the interactive machinery > > 5: 35cf552f27 ! 6: 5ded8654ec git-legacy-rebase: simplify unnecessary triply-nested if > > @@ -18,7 +18,7 @@ > > moving the innermost conditional to the outside, allowing us to remove > > the test on git_am_opt entirely and giving us the following form: > > > > - if incomptable_opts: > > + if incompatible_opts: > > if interactive: > > show_error_about_interactive_and_am_incompatibilities > > if rebase-merge: > > @@ -44,18 +44,18 @@ > > then > > - if test -n "$incompatible_opts" > > - then > > -- die "$(gettext "error: cannot combine am options with interactive options")" > > +- die "$(gettext "fatal: cannot combine am options with interactive options")" > > - fi > > -+ die "$(gettext "error: cannot combine am options with interactive options")" > > ++ die "$(gettext "fatal: cannot combine am options with interactive options")" > > fi > > - if test -n "$do_merge"; then > > - if test -n "$incompatible_opts" > > - then > > -- die "$(gettext "error: cannot combine am options with merge options")" > > +- die "$(gettext "fatal: cannot combine am options with merge options")" > > - fi > > + if test -n "$do_merge" > > + then > > -+ die "$(gettext "error: cannot combine am options with merge options")" > > ++ die "$(gettext "fatal: cannot combine am options with merge options")" > > fi > > fi > > > > 6: 2a3d8ff1c1 = 7: bb8e5a4527 rebase: define linearization ordering and enforce it > > 7: 58371d377a ! 8: 5de428d695 rebase: Implement --merge via the interactive machinery > > @@ -142,14 +142,15 @@ > > imply_interactive(&options, "--root without --onto"); > > > > @@ > > + break; > > > > if (is_interactive(&options) && i >= 0) > > - die(_("error: cannot combine am options " > > +- die(_("cannot combine am options " > > - "with interactive options")); > > - if (options.type == REBASE_MERGE && i >= 0) > > -- die(_("error: cannot combine am options " > > -- "with merge options ")); > > -+ "with either interactive or merge options")); > > +- die(_("cannot combine am options with merge options ")); > > ++ die(_("cannot combine am options with either " > > ++ "interactive or merge options")); > > } > > > > if (options.signoff) { > > @@ -205,13 +206,13 @@ > > then > > - if test -n "$interactive_rebase" > > - then > > -- die "$(gettext "error: cannot combine am options with interactive options")" > > +- die "$(gettext "fatal: cannot combine am options with interactive options")" > > - fi > > - if test -n "$do_merge" > > + if test -n "$actually_interactive" || test "$do_merge" > > then > > -- die "$(gettext "error: cannot combine am options with merge options")" > > -+ die "$(gettext "error: cannot combine am options with either interactive or merge options")" > > +- die "$(gettext "fatal: cannot combine am options with merge options")" > > ++ die "$(gettext "fatal: cannot combine am options with either interactive or merge options")" > > fi > > fi > > > > @@ -225,7 +226,7 @@ > > # linear history? > > ! (git rev-list --parents "$onto".."$orig_head" | sane_grep " .* ") > /dev/null > > @@ > > - GIT_PAGER='' git diff --stat --summary "$mb" "$onto" > > + GIT_PAGER='' git diff --stat --summary "$mb_tree" "$onto" > > fi > > > > +if test -z "$actually_interactive" && test "$mb" = "$orig_head" > > -- > > 2.20.0.8.g5de428d695 > > > > >