Git Mailing List Archive on lore.kernel.org
 help / color / Atom feed
From: Phillip Wood <phillip.wood123@gmail.com>
To: Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>,
	git@vger.kernel.org
Cc: Johannes.Schindelin@gmx.de, phillip.wood@dunelm.org.uk,
	liu.denton@gmail.com, gitster@pobox.com, plroskin@gmail.com,
	alban.gruin@gmail.com, szeder.dev@gmail.com, jrnieder@gmail.com,
	emilyshaffer@google.com, Elijah Newren <newren@gmail.com>
Subject: Re: [PATCH v5 00/20] rebase: make the default backend configurable and change the default
Date: Sun, 16 Feb 2020 15:01:51 +0000
Message-ID: <e2863381-174c-a55c-bb22-0c7aec9cabf4@gmail.com> (raw)
In-Reply-To: <pull.679.v5.git.git.1581802602.gitgitgadget@gmail.com>

Hi Elijah

On 15/02/2020 21:36, Elijah Newren via GitGitGadget wrote:
> This is v5 of en/rebase-backend based on v2.25.0. This series does a lot of
> work around making the default rebase backend configurable, and switches the
> default from the apply backend to the merge one.
> 
> Changes since v4:
> 
>   * Added a note about an unfortunately-timed Ctrl-C to the docs, as
>     suggested by SZEDER.

That's a good idea - I don't know why builtin/rebase.c only calls 
rebase_write_basic_state() which writes head-name after it has run 
format-patch and am. We write the patches to the state directory so it's 
not like it saves us from having to clean up.

>   * Addressed feedback from Phillip
>   * Added a new patch at the end renaming the two backends. PLEASE take a
>     look at its commit message for rationale and let me know if you agree
>     with it.

I had a look and I think it is a good idea - merge and apply make much 
more sense that interactive and am

> Note that in particular, the last patch at the end could have been partially
> squashed into other patches, but if people objected to the patch in general
> I wanted Junio to be able to take the rest of the series and just drop that
> patch.
> 
> As with v4, there are some things mentioned earlier that are not addressed:
> 
>   * I did not remove the --am (now --apply) option as suggested by Phillip,
>     since Junio and Phillip were still discussing whether it is
>     wanted/needed. I kind of like having it, but have no strong opinion.
>   * I noted the post-commit hook in the differences between backends. Emily
>     is investigating what changes need to happen there, so I merely
>     documented the existing differences.
>   * I did not address the last two items Jonathan brought up as I couldn't
>     find enough information to reproduce or understand the problems.
> 
> Elijah Newren (20):
>    git-rebase.txt: update description of --allow-empty-message
>    t3404: directly test the behavior of interest
>    rebase (interactive-backend): make --keep-empty the default
>    rebase (interactive-backend): fix handling of commits that become
>      empty
>    t3406: simplify an already simple test
>    rebase, sequencer: remove the broken GIT_QUIET handling
>    rebase: make sure to pass along the quiet flag to the sequencer
>    rebase: fix handling of restrict_revision
>    t3432: make these tests work with either am or merge backends
>    rebase: allow more types of rebases to fast-forward
>    git-rebase.txt: add more details about behavioral differences of
>      backends
>    rebase: move incompatibility checks between backend options a bit
>      earlier
>    rebase: add an --am option
>    git-prompt: change the prompt for interactive-based rebases
>    rebase: drop '-i' from the reflog for interactive-based rebases
>    rebase tests: mark tests specific to the am-backend with --am
>    rebase tests: repeat some tests using the merge backend instead of am
>    rebase: make the backend configurable via config setting
>    rebase: change the default backend from "am" to "merge"
>    rebase: rename the two primary rebase backends
> 
>   Documentation/config/rebase.txt        |   6 +
>   Documentation/git-rebase.txt           | 170 +++++++++++++---
>   builtin/rebase.c                       | 257 +++++++++++++++++--------
>   contrib/completion/git-prompt.sh       |   6 +-
>   rebase-interactive.c                   |   7 +-
>   rebase-interactive.h                   |   2 +-
>   sequencer.c                            |  82 +++++---
>   sequencer.h                            |   3 +-
>   t/t3400-rebase.sh                      |  40 +++-
>   t/t3401-rebase-and-am-rename.sh        |   4 +-
>   t/t3404-rebase-interactive.sh          |  19 +-
>   t/t3406-rebase-message.sh              |  19 +-
>   t/t3407-rebase-abort.sh                |   6 +-
>   t/t3420-rebase-autostash.sh            |  22 +--
>   t/t3421-rebase-topology-linear.sh      |  48 ++---
>   t/t3424-rebase-empty.sh                | 126 ++++++++++++
>   t/t3425-rebase-topology-merges.sh      |   8 +-
>   t/t3427-rebase-subtree.sh              |  12 +-
>   t/t3432-rebase-fast-forward.sh         |  54 +++---
>   t/t5407-post-rewrite-hook.sh           |  16 +-
>   t/t5520-pull.sh                        |  27 ++-
>   t/t6047-diff3-conflict-markers.sh      |  13 +-
>   t/t7512-status-help.sh                 |  12 +-
>   t/t9106-git-svn-commit-diff-clobber.sh |   3 +-
>   t/t9903-bash-prompt.sh                 |   8 +-
>   25 files changed, 693 insertions(+), 277 deletions(-)
>   create mode 100755 t/t3424-rebase-empty.sh
> 
> 
> base-commit: d0654dc308b0ba76dd8ed7bbb33c8d8f7aacd783
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-679%2Fnewren%2Frebase-fixes-v5
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-679/newren/rebase-fixes-v5
> Pull-Request: https://github.com/git/git/pull/679
> 
> Range-diff vs v4:
> 
>    1:  3ea48d53940 =  1:  3ea48d53940 git-rebase.txt: update description of --allow-empty-message
>    2:  10fdd162a05 =  2:  10fdd162a05 t3404: directly test the behavior of interest
>    3:  179f82ab83e !  3:  74cab9a32b3 rebase (interactive-backend): make --keep-empty the default
>       @@ -4,13 +4,13 @@
>        
>            Different rebase backends have different treatment for commits which
>            start empty (i.e. have no changes relative to their parent), and the
>       -    --keep-empty option was added at some point to allow adjusting behavior
>       -    for the interactive backend.  The handling of commits which start empty
>       -    is actually quite similar to commit b00bf1c9a8dd (git-rebase: make
>       -    --allow-empty-message the default, 2018-06-27), which pointed out that
>       -    the behavior for various backends is often more happenstance than
>       -    design.  The specific change made in that commit is actually quite
>       -    relevant as well and much of the logic there directly applies here.
>       +    --keep-empty option was added at some point to allow adjusting behavior.
>       +    The handling of commits which start empty is actually quite similar to
>       +    commit b00bf1c9a8dd (git-rebase: make --allow-empty-message the default,
>       +    2018-06-27), which pointed out that the behavior for various backends is
>       +    often more happenstance than design.  The specific change made in that
>       +    commit is actually quite relevant as well and much of the logic there
>       +    directly applies here.

Thanks for rewording this I think the new version is better for omitting 
the reference to the interactive backend. The interdiff for this patch 
and the next look good.

Thanks for working on this - it's turned into quite a large series

Best Wishes

Phillip

>            It makes a lot of sense in 'git commit' to error out on the creation of
>            empty commits, unless an override flag is provided.  However, once
>       @@ -405,8 +405,6 @@
>        +	test_cmp expect actual
>        +'
>        +
>       -+GIT_SEQUENCE_EDITOR=: && export GIT_SEQUENCE_EDITOR
>       -+
>        +test_expect_success 'rebase --interactive with a variety of empty commits' '
>        +	git checkout -B testing localmods &&
>        +	test_must_fail git rebase --interactive upstream &&
>    4:  c9542a2abe0 !  4:  54b745c4ab5 rebase (interactive-backend): fix handling of commits that become empty
>       @@ -98,6 +98,8 @@
>        +	With ask (implied by --interactive), the rebase will halt when
>        +	an empty commit is applied allowing you to choose whether to
>        +	drop it, edit files more, or just commit the empty changes.
>       ++	Other options, like --exec, will use the default of drop unless
>       ++	-i/--interactive is explicitly specified.
>        ++
>        +Note that commits which start empty are kept, and commits which are
>        +clean cherry-picks (as determined by `git log --cherry-mark ...`) are
>       @@ -224,7 +226,7 @@
>         			      REBASE_PRESERVE_MERGES, PARSE_OPT_HIDDEN),
>         		OPT_RERERE_AUTOUPDATE(&options.allow_rerere_autoupdate),
>        +		OPT_CALLBACK_F(0, "empty", &options, N_("{drop,keep,ask}"),
>       -+			       N_("how to handle empty commits"),
>       ++			       N_("how to handle commits that become empty"),
>        +			       PARSE_OPT_NONEG, parse_opt_empty),
>         		{ OPTION_CALLBACK, 'k', "keep-empty", &options, NULL,
>         			N_("(DEPRECATED) keep empty commits"),
>       @@ -342,8 +344,10 @@
>        -	if (!opts->no_commit) {
>        +	} else if (allow == 2) {
>        +		drop_commit = 1;
>       -+		fprintf(stderr, _("No changes -- Patch already applied.\n"));
>       -+	} // else allow == 0 and there's nothing special to do
>       ++		fprintf(stderr,
>       ++			_("dropping %s %s -- patch contents already upstream\n"),
>       ++			oid_to_hex(&commit->object.oid), msg.subject);
>       ++	} /* else allow == 0 and there's nothing special to do */
>        +	if (!opts->no_commit && !drop_commit) {
>         		if (author || command == TODO_REVERT || (flags & AMEND_MSG))
>         			res = do_commit(r, msg_file, author, opts, flags);
>       @@ -404,9 +408,7 @@
>        -test_expect_failure 'rebase --merge with a variety of empty commits' '
>        -	test_when_finished "git rebase --abort" &&
>        +test_expect_success 'rebase --merge --empty=drop' '
>       - 	git checkout -B testing localmods &&
>       --	# rebase --merge should not halt on the commit that becomes empty
>       --	git rebase --merge upstream &&
>       ++	git checkout -B testing localmods &&
>        +	git rebase --merge --empty=drop upstream &&
>        +
>        +	test_write_lines D C B A >expect &&
>       @@ -414,6 +416,17 @@
>        +	test_cmp expect actual
>        +'
>        +
>       ++test_expect_success 'rebase --merge uses default of --empty=drop' '
>       + 	git checkout -B testing localmods &&
>       +-	# rebase --merge should not halt on the commit that becomes empty
>       + 	git rebase --merge upstream &&
>       +
>       + 	test_write_lines D C B A >expect &&
>       +@@
>       + 	test_cmp expect actual
>       + '
>       +
>       +-test_expect_success 'rebase --interactive with a variety of empty commits' '
>        +test_expect_success 'rebase --merge --empty=keep' '
>        +	git checkout -B testing localmods &&
>        +	git rebase --merge --empty=keep upstream &&
>       @@ -428,14 +441,12 @@
>        +	test_must_fail git rebase --merge --empty=ask upstream &&
>        +
>        +	git rebase --skip &&
>       -
>       - 	test_write_lines D C B A >expect &&
>       - 	git log --format=%s >actual &&
>       -@@
>       -
>       - GIT_SEQUENCE_EDITOR=: && export GIT_SEQUENCE_EDITOR
>       -
>       --test_expect_success 'rebase --interactive with a variety of empty commits' '
>       ++
>       ++	test_write_lines D C B A >expect &&
>       ++	git log --format=%s >actual &&
>       ++	test_cmp expect actual
>       ++'
>       ++
>        +test_expect_success 'rebase --interactive --empty=drop' '
>        +	git checkout -B testing localmods &&
>        +	git rebase --interactive --empty=drop upstream &&
>       @@ -455,11 +466,19 @@
>        +'
>        +
>        +test_expect_success 'rebase --interactive --empty=ask' '
>       - 	git checkout -B testing localmods &&
>       --	test_must_fail git rebase --interactive upstream &&
>       ++	git checkout -B testing localmods &&
>        +	test_must_fail git rebase --interactive --empty=ask upstream &&
>       -
>       - 	git rebase --skip &&
>       ++
>       ++	git rebase --skip &&
>       ++
>       ++	test_write_lines D C B A >expect &&
>       ++	git log --format=%s >actual &&
>       ++	test_cmp expect actual
>       ++'
>       ++
>       ++test_expect_success 'rebase --interactive uses default of --empty=ask' '
>       + 	git checkout -B testing localmods &&
>       + 	test_must_fail git rebase --interactive upstream &&
>         
>        
>         diff --git a/t/t3427-rebase-subtree.sh b/t/t3427-rebase-subtree.sh
>    5:  9f66229d5cc =  5:  f5170e71510 t3406: simplify an already simple test
>    6:  8d731fa39c3 =  6:  2791b818c4d rebase, sequencer: remove the broken GIT_QUIET handling
>    7:  b6b6597eef8 =  7:  3dccb58d066 rebase: make sure to pass along the quiet flag to the sequencer
>    8:  0acefa988b1 =  8:  4e6f5ce8c46 rebase: fix handling of restrict_revision
>    9:  8c5b5b51330 =  9:  bcd04ec4ded t3432: make these tests work with either am or merge backends
>   10:  b8c087d6fb1 = 10:  45eb87b36b0 rebase: allow more types of rebases to fast-forward
>   11:  b50a1741e0b = 11:  11e96b9a5fa git-rebase.txt: add more details about behavioral differences of backends
>   12:  58e6e4ffb3f = 12:  0c921919dce rebase: move incompatibility checks between backend options a bit earlier
>   13:  5478c730aca = 13:  de1b0aaca88 rebase: add an --am option
>   14:  db5e29bd818 = 14:  e4c04d3cf8b git-prompt: change the prompt for interactive-based rebases
>   15:  413e190ac9a ! 15:  f0f00c1e7fd rebase: drop '-i' from the reflog for interactive-based rebases
>       @@ -54,17 +54,6 @@
>         		 */
>         		return error(_("%s: Unable to write new index file"),
>         			_(action_name(opts)));
>       -@@
>       - 	int next = todo_list->current, offset, fd;
>       -
>       - 	/*
>       --	 * rebase -i writes "git-rebase-todo" without the currently executing
>       --	 * command, appending it to "done" instead.
>       -+	 * interactive backend writes "git-rebase-todo" without the currently
>       -+	 * executing command, appending it to "done" instead.
>       - 	 */
>       - 	if (is_rebase_i(opts))
>       - 		next++;
>        @@
>         		return error(_("illegal label name: '%.*s'"), len, name);
>         
>   16:  170be283a85 ! 16:  56486d4d694 rebase tests: mark tests specific to the am-backend with --am
>       @@ -173,6 +173,163 @@
>         testrebase " --interactive" .git/rebase-merge
>         
>        
>       + diff --git a/t/t3421-rebase-topology-linear.sh b/t/t3421-rebase-topology-linear.sh
>       + --- a/t/t3421-rebase-topology-linear.sh
>       + +++ b/t/t3421-rebase-topology-linear.sh
>       +@@
>       + 		test_linear_range 'd e' c..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase success -p
>       +@@
>       + 		test_cmp_rev e HEAD
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase success -p
>       +@@
>       + 		test_linear_range 'd e' b..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success --fork-point
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       +@@
>       + 		test_linear_range 'd e' branch-b..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success --fork-point
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       +@@
>       + 		test_cmp_rev e HEAD
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success --fork-point
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       +@@
>       + 		test_linear_range 'd i' h..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase success -p
>       +@@
>       + 		test_linear_range 'd' h..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase success -p
>       +@@
>       + 		test_linear_range 'd i' f..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase success -p
>       +@@
>       + 		test_linear_range 'd gp i' h..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase success -p
>       +@@
>       + 		test_linear_range 'j d k l' c..
>       + 	"
>       + }
>       +-test_run_rebase failure ''
>       ++test_run_rebase failure --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase failure -p
>       +@@
>       + 		test_linear_range 'd k l' c..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase success -p
>       +@@
>       + 		test_linear_range 'd k l' j..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase success -p
>       +@@
>       + 		test_linear_range 'x y' c..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase success -p
>       +@@
>       + 		test_linear_range 'x y' c..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase failure -p
>       +@@
>       + 		test_linear_range 'x y' m..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase success -p
>       +@@
>       + 	"
>       + }
>       +
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase failure -p
>       +@@
>       + 		test_linear_range 'x y' m..
>       + 	"
>       + }
>       +-test_run_rebase success ''
>       ++test_run_rebase success --am
>       + test_run_rebase success -m
>       + test_run_rebase success -i
>       + test_have_prereq !REBASE_P || test_run_rebase failure -p
>       +
>         diff --git a/t/t3425-rebase-topology-merges.sh b/t/t3425-rebase-topology-merges.sh
>         --- a/t/t3425-rebase-topology-merges.sh
>         +++ b/t/t3425-rebase-topology-merges.sh
>   17:  1e3d4066c40 = 17:  dc12574a8b3 rebase tests: repeat some tests using the merge backend instead of am
>   18:  9b4ac83d2d0 = 18:  ba1f2699b39 rebase: make the backend configurable via config setting
>   19:  859a4a94d7f ! 19:  59faaa2f920 rebase: change the default backend from "am" to "merge"
>       @@ -13,6 +13,7 @@
>                patches incorrectly.[2]
>              * lack of access to original commits means that conflict marker
>                annotation has less information available.
>       +      * the am backend has safety problems with an ill-timed interrupt.
>        
>            Also, the merge/interactive backend have far more abilities, appear to
>            currently have a slight performance advantage[3] and have room for more
>       @@ -38,6 +39,24 @@
>         +
>         Note that a rebase merge works by replaying each commit from the working
>         branch on top of the <upstream> branch.  Because of this, when a merge
>       +@@
>       + should have the same behavior, though it is not clear which one is
>       + correct.
>       +
>       ++Interruptability
>       ++~~~~~~~~~~~~~~~~
>       ++
>       ++The am backend has safety problems with an ill-timed interrupt; if the
>       ++user presses Ctrl-C at the wrong time to try to abort the rebase, the
>       ++rebase can enter a state where it cannot be aborted with a subsequent
>       ++`git rebase --abort`.  The interactive backend does not appear to
>       ++suffer from the same shortcoming.  (See
>       ++https://lore.kernel.org/git/20200207132152.GC2868@szeder.dev/ for
>       ++details.)
>       ++
>       + Miscellaneous differences
>       + ~~~~~~~~~~~~~~~~~~~~~~~~~
>       +
>        
>         diff --git a/builtin/rebase.c b/builtin/rebase.c
>         --- a/builtin/rebase.c
>    -:  ----------- > 20:  ad8339aebf2 rebase: rename the two primary rebase backends
> 

      parent reply index

Thread overview: 161+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-20 17:09 [PATCH 00/15] rebase: make the default backend configurable Elijah Newren via GitGitGadget
2019-12-20 17:09 ` [PATCH 01/15] rebase: extend the options for handling of empty commits Elijah Newren via GitGitGadget
2019-12-20 21:29   ` Junio C Hamano
2019-12-21  0:32     ` Elijah Newren
2019-12-21 18:52       ` Elijah Newren
2019-12-21 23:49       ` Junio C Hamano
2019-12-20 17:09 ` [PATCH 02/15] t3406: simplify an already simple test Elijah Newren via GitGitGadget
2019-12-20 17:09 ` [PATCH 03/15] rebase, sequencer: remove the broken GIT_QUIET handling Elijah Newren via GitGitGadget
2019-12-20 21:34   ` Junio C Hamano
2019-12-20 17:09 ` [PATCH 04/15] rebase: make sure to pass along the quiet flag to the sequencer Elijah Newren via GitGitGadget
2019-12-20 17:09 ` [PATCH 05/15] rebase: fix handling of restrict_revision Elijah Newren via GitGitGadget
2019-12-20 21:37   ` Junio C Hamano
2019-12-20 17:09 ` [PATCH 06/15] t3432: make these tests work with either am or merge backends Elijah Newren via GitGitGadget
2019-12-22  5:11   ` Denton Liu
2019-12-23 17:17     ` Elijah Newren
2019-12-20 17:09 ` [PATCH 07/15] rebase: allow more types of rebases to fast-forward Elijah Newren via GitGitGadget
2019-12-20 17:09 ` [PATCH 08/15] git-rebase.txt: add more details about behavioral differences of backends Elijah Newren via GitGitGadget
2019-12-20 17:09 ` [PATCH 09/15] rebase: move incompatibility checks between backend options a bit earlier Elijah Newren via GitGitGadget
2019-12-20 17:09 ` [PATCH 10/15] rebase: add an --am option Elijah Newren via GitGitGadget
2019-12-20 17:09 ` [PATCH 11/15] contrib: change the prompt for am-based rebases Elijah Newren via GitGitGadget
2019-12-20 23:07   ` SZEDER Gábor
2019-12-21  0:17     ` Elijah Newren
2019-12-20 17:09 ` [PATCH 12/15] rebase tests: mark tests specific to the am-backend with --am Elijah Newren via GitGitGadget
2019-12-20 17:09 ` [PATCH 13/15] rebase tests: repeat some tests using the merge backend instead of am Elijah Newren via GitGitGadget
2019-12-20 17:09 ` [PATCH 14/15] rebase: make the backend configurable via config setting Elijah Newren via GitGitGadget
2019-12-20 17:09 ` [PATCH 15/15] rebase: change the default backend from "am" to "merge" Elijah Newren via GitGitGadget
2019-12-20 18:51 ` [PATCH 00/15] rebase: make the default backend configurable Alban Gruin
2019-12-20 18:55   ` Elijah Newren
2019-12-23 18:49 ` [PATCH v2 " Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 01/15] rebase: extend the options for handling of empty commits Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 02/15] t3406: simplify an already simple test Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 03/15] rebase, sequencer: remove the broken GIT_QUIET handling Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 04/15] rebase: make sure to pass along the quiet flag to the sequencer Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 05/15] rebase: fix handling of restrict_revision Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 06/15] t3432: make these tests work with either am or merge backends Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 07/15] rebase: allow more types of rebases to fast-forward Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 08/15] git-rebase.txt: add more details about behavioral differences of backends Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 09/15] rebase: move incompatibility checks between backend options a bit earlier Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 10/15] rebase: add an --am option Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 11/15] contrib: change the prompt for interactive-based rebases Elijah Newren via GitGitGadget
2019-12-23 22:00     ` Denton Liu
2019-12-23 18:49   ` [PATCH v2 12/15] rebase tests: mark tests specific to the am-backend with --am Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 13/15] rebase tests: repeat some tests using the merge backend instead of am Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 14/15] rebase: make the backend configurable via config setting Elijah Newren via GitGitGadget
2019-12-23 18:49   ` [PATCH v2 15/15] rebase: change the default backend from "am" to "merge" Elijah Newren via GitGitGadget
2019-12-24 19:54   ` [PATCH v3 00/15] rebase: make the default backend configurable Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 01/15] rebase: extend the options for handling of empty commits Elijah Newren via GitGitGadget
2020-01-07 14:37       ` Phillip Wood
2020-01-07 19:15         ` Elijah Newren
2020-01-08 14:27           ` Phillip Wood
2020-01-09 21:32             ` Johannes Schindelin
2019-12-24 19:54     ` [PATCH v3 02/15] t3406: simplify an already simple test Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 03/15] rebase, sequencer: remove the broken GIT_QUIET handling Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 04/15] rebase: make sure to pass along the quiet flag to the sequencer Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 05/15] rebase: fix handling of restrict_revision Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 06/15] t3432: make these tests work with either am or merge backends Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 07/15] rebase: allow more types of rebases to fast-forward Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 08/15] git-rebase.txt: add more details about behavioral differences of backends Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 09/15] rebase: move incompatibility checks between backend options a bit earlier Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 10/15] rebase: add an --am option Elijah Newren via GitGitGadget
2020-01-07 14:43       ` Phillip Wood
2020-01-07 19:26         ` Elijah Newren
2020-01-07 20:11           ` Junio C Hamano
2020-01-08 14:32             ` Phillip Wood
2020-01-08 17:18               ` Junio C Hamano
2020-01-08 18:55                 ` Phillip Wood
2019-12-24 19:54     ` [PATCH v3 11/15] git-prompt: change the prompt for interactive-based rebases Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 12/15] rebase tests: mark tests specific to the am-backend with --am Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 13/15] rebase tests: repeat some tests using the merge backend instead of am Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 14/15] rebase: make the backend configurable via config setting Elijah Newren via GitGitGadget
2019-12-24 19:54     ` [PATCH v3 15/15] rebase: change the default backend from "am" to "merge" Elijah Newren via GitGitGadget
2020-01-10 23:14       ` Jonathan Nieder
2020-01-11  1:16         ` Elijah Newren
2020-01-11 14:41           ` Phillip Wood
2020-01-12 17:59             ` Johannes Schindelin
2020-01-16  6:32               ` Elijah Newren
2020-01-16  7:58                 ` Jonathan Nieder
2020-01-16  8:06                   ` Jonathan Nieder
2020-01-16 16:18                     ` Elijah Newren
2020-01-16 20:35                       ` Jonathan Nieder
2020-01-16 21:30                         ` Elijah Newren
2020-01-16 22:39                           ` Jonathan Nieder
2020-01-16 23:19                             ` Elijah Newren
2020-01-16 23:25                           ` Junio C Hamano
2020-01-17  0:51                             ` Elijah Newren
2020-01-16 15:35                   ` Elijah Newren
2020-01-16 20:05                   ` Junio C Hamano
2020-01-16 10:48                 ` Johannes Schindelin
2020-01-12 21:23             ` Junio C Hamano
2020-01-15 19:50             ` Jonathan Nieder
2020-01-15 21:59               ` Emily Shaffer
2020-01-16  6:14     ` [PATCH v4 00/19] rebase: make the default backend configurable Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 01/19] git-rebase.txt: update description of --allow-empty-message Elijah Newren via GitGitGadget
2020-02-09 15:59         ` Phillip Wood
2020-02-13 18:35           ` Elijah Newren
2020-01-16  6:14       ` [PATCH v4 02/19] t3404: directly test the behavior of interest Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 03/19] rebase (interactive-backend): make --keep-empty the default Elijah Newren via GitGitGadget
2020-02-09 15:59         ` Phillip Wood
2020-02-13 18:52           ` Elijah Newren
2020-01-16  6:14       ` [PATCH v4 04/19] rebase (interactive-backend): fix handling of commits that become empty Elijah Newren via GitGitGadget
2020-02-10 14:27         ` Phillip Wood
2020-02-13 18:54           ` Elijah Newren
2020-02-16 14:46             ` Phillip Wood
2020-01-16  6:14       ` [PATCH v4 05/19] t3406: simplify an already simple test Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 06/19] rebase, sequencer: remove the broken GIT_QUIET handling Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 07/19] rebase: make sure to pass along the quiet flag to the sequencer Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 08/19] rebase: fix handling of restrict_revision Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 09/19] t3432: make these tests work with either am or merge backends Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 10/19] rebase: allow more types of rebases to fast-forward Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 11/19] git-rebase.txt: add more details about behavioral differences of backends Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 12/19] rebase: move incompatibility checks between backend options a bit earlier Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 13/19] rebase: add an --am option Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 14/19] git-prompt: change the prompt for interactive-based rebases Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 15/19] rebase: drop '-i' from the reflog " Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 16/19] rebase tests: mark tests specific to the am-backend with --am Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 17/19] rebase tests: repeat some tests using the merge backend instead of am Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 18/19] rebase: make the backend configurable via config setting Elijah Newren via GitGitGadget
2020-01-16  6:14       ` [PATCH v4 19/19] rebase: change the default backend from "am" to "merge" Elijah Newren via GitGitGadget
2020-01-17 16:58       ` [PATCH v4 00/19] rebase: make the default backend configurable Phillip Wood
2020-02-05 21:06         ` Junio C Hamano
2020-02-05 22:38           ` Elijah Newren
2020-02-15 21:36       ` [PATCH v5 00/20] rebase: make the default backend configurable and change the default Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 01/20] git-rebase.txt: update description of --allow-empty-message Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 02/20] t3404: directly test the behavior of interest Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 03/20] rebase (interactive-backend): make --keep-empty the default Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 04/20] rebase (interactive-backend): fix handling of commits that become empty Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 05/20] t3406: simplify an already simple test Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 06/20] rebase, sequencer: remove the broken GIT_QUIET handling Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 07/20] rebase: make sure to pass along the quiet flag to the sequencer Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 08/20] rebase: fix handling of restrict_revision Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 09/20] t3432: make these tests work with either am or merge backends Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 10/20] rebase: allow more types of rebases to fast-forward Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 11/20] git-rebase.txt: add more details about behavioral differences of backends Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 12/20] rebase: move incompatibility checks between backend options a bit earlier Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 13/20] rebase: add an --am option Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 14/20] git-prompt: change the prompt for interactive-based rebases Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 15/20] rebase: drop '-i' from the reflog " Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 16/20] rebase tests: mark tests specific to the am-backend with --am Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 17/20] rebase tests: repeat some tests using the merge backend instead of am Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 18/20] rebase: make the backend configurable via config setting Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 19/20] rebase: change the default backend from "am" to "merge" Elijah Newren via GitGitGadget
2020-02-15 21:36         ` [PATCH v5 20/20] rebase: rename the two primary rebase backends Elijah Newren via GitGitGadget
2020-03-12 15:13           ` Emily Shaffer
2020-03-12 16:33             ` Elijah Newren
2020-03-12 17:55               ` Jonathan Nieder
2020-03-12 18:39                 ` Elijah Newren
2020-03-12 18:46                   ` Jonathan Nieder
2020-03-12 19:31                     ` Elijah Newren
2020-03-17  2:58                       ` Jonathan Nieder
2020-03-17  4:45                         ` Elijah Newren
2020-03-12 19:54                     ` Junio C Hamano
2020-03-12 19:07               ` Junio C Hamano
2020-03-12 19:12                 ` Jonathan Nieder
2020-03-12 19:12               ` Junio C Hamano
2020-03-12 19:29                 ` Elijah Newren
2020-03-12 20:37                   ` Jeff King
2020-03-12 21:27                     ` Junio C Hamano
2020-03-12 22:06                       ` Elijah Newren
2020-03-13  0:04                         ` Junio C Hamano
2020-03-12 23:30                       ` Jonathan Nieder
2020-02-16 15:01         ` Phillip Wood [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e2863381-174c-a55c-bb22-0c7aec9cabf4@gmail.com \
    --to=phillip.wood123@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=alban.gruin@gmail.com \
    --cc=emilyshaffer@google.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=gitster@pobox.com \
    --cc=jrnieder@gmail.com \
    --cc=liu.denton@gmail.com \
    --cc=newren@gmail.com \
    --cc=phillip.wood@dunelm.org.uk \
    --cc=plroskin@gmail.com \
    --cc=szeder.dev@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Mailing List Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/git/0 git/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 git git/ https://lore.kernel.org/git \
		git@vger.kernel.org
	public-inbox-index git

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.git


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git