From: "Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> To: 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, Junio C Hamano <gitster@pobox.com>, Elijah Newren <newren@gmail.com> Subject: [PATCH v3 14/15] rebase: make the backend configurable via config setting Date: Tue, 24 Dec 2019 19:54:58 +0000 Message-ID: <8bec6df51af83665698ba6dae8d5b3a01fabe21f.1577217299.git.gitgitgadget@gmail.com> (raw) In-Reply-To: <pull.679.v3.git.git.1577217299.gitgitgadget@gmail.com> From: Elijah Newren <newren@gmail.com> Signed-off-by: Elijah Newren <newren@gmail.com> --- Documentation/config/rebase.txt | 8 ++++++++ builtin/rebase.c | 31 ++++++++++++++++++++++++------- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/Documentation/config/rebase.txt b/Documentation/config/rebase.txt index d98e32d812..e6ae30c999 100644 --- a/Documentation/config/rebase.txt +++ b/Documentation/config/rebase.txt @@ -5,6 +5,14 @@ rebase.useBuiltin:: is always used. Setting this will emit a warning, to alert any remaining users that setting this now does nothing. +rebase.backend:: + Default backend to use for rebasing. Possible choices are + 'am' or 'merge' (note that the merge backend is sometimes also + refered to as the interactive backend or the interactive + machinery elsewhere in the docs). Also, in the future, if the + merge backend gains all remaining capabilities of the am + backend, this setting may become unused. + rebase.stat:: Whether to show a diffstat of what changed upstream since the last rebase. False by default. diff --git a/builtin/rebase.c b/builtin/rebase.c index b7915fc0cb..d602b2da4c 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -60,6 +60,7 @@ enum empty_type { struct rebase_options { enum rebase_type type; enum empty_type empty; + const char *default_backend; const char *state_dir; struct commit *upstream; const char *upstream_name; @@ -103,6 +104,7 @@ struct rebase_options { #define REBASE_OPTIONS_INIT { \ .type = REBASE_UNSPECIFIED, \ .empty = EMPTY_UNSPECIFIED, \ + .default_backend = "am", \ .flags = REBASE_NO_QUIET, \ .git_am_opts = ARGV_ARRAY_INIT, \ .git_format_patch_opt = STRBUF_INIT \ @@ -1298,6 +1300,10 @@ static int rebase_config(const char *var, const char *value, void *data) return 0; } + if (!strcmp(var, "rebase.backend")) { + return git_config_string(&opts->default_backend, var, value); + } + return git_default_config(var, value, data); } @@ -1928,9 +1934,23 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) if (strcmp(options.git_am_opts.argv[i], "-q")) break; - if (is_interactive(&options) && i >= 0) - die(_("cannot combine am options with either " - "interactive or merge options")); + if (i >= 0) { + if (is_interactive(&options)) + die(_("cannot combine am options with either " + "interactive or merge options")); + else + options.type = REBASE_AM; + } + } + + if (options.type == REBASE_UNSPECIFIED) { + if (!strcmp(options.default_backend, "merge")) + options.type = REBASE_MERGE; + else if (!strcmp(options.default_backend, "am")) + options.type = REBASE_AM; + else + die(_("Unknown rebase backend: %s"), + options.default_backend); } switch (options.type) { @@ -1943,10 +1963,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) options.state_dir = apply_dir(); break; default: - /* the default rebase backend is `--am` */ - options.type = REBASE_AM; - options.state_dir = apply_dir(); - break; + BUG("options.type was just set above; should be unreachable."); } if (options.empty == EMPTY_UNSPECIFIED) { -- gitgitgadget
next prev 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 ` Elijah Newren via GitGitGadget [this message] 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 ` [PATCH v5 00/20] rebase: make the default backend configurable and change the default Phillip Wood
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=8bec6df51af83665698ba6dae8d5b3a01fabe21f.1577217299.git.gitgitgadget@gmail.com \ --to=gitgitgadget@gmail.com \ --cc=Johannes.Schindelin@gmx.de \ --cc=alban.gruin@gmail.com \ --cc=git@vger.kernel.org \ --cc=gitster@pobox.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