Re: [PATCH v4 0/8] Reimplement rebase --merge via interactive machinery
From: Johannes Schindelin <hidden>
Date: 2019-01-21 21:01:39
Hi Elijah, On Mon, 21 Jan 2019, Johannes Schindelin wrote:
On Tue, 11 Dec 2018, Elijah Newren wrote:quoted
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, Dschoquoted
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