{"thread":{"id":"50679","subject":"[PATCH 0/1] Deprecate git rebase --preserve-merges","startedAt":"2019-03-07T10:00:59Z","lastAt":"2019-05-09T14:36:38Z","messageCount":10,"participants":["Johannes Schindelin via GitGitGadget","Phillip Wood","Eric Sunshine","Johannes Schindelin","Ævar Arnfjörð Bjarmason"],"isPatch":true,"patchVersion":1,"patchTotal":1},"messages":[{"id":"370893","messageId":"pull.158.git.gitgitgadget@gmail.com","threadId":"50679","inReplyTo":null,"subject":"[PATCH 0/1] Deprecate git rebase --preserve-merges","fromName":"Johannes Schindelin via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2019-03-07T10:00:55Z","receivedAt":"2019-03-07T10:00:59Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"It had a good run, but its design was irreparably limited. So I came up with\na redesign:--rebase-merges. It seems to work all right, so now it is time to\nstart letting go of the previous design.\n\nJohannes Schindelin (1):\n  rebase: deprecate --preserve-merges\n\n Documentation/config/branch.txt |  6 +++---\n Documentation/config/pull.txt   |  6 +++---\n Documentation/git-rebase.txt    | 23 ++++++++++++-----------\n builtin/rebase.c                |  8 ++++++--\n git-rebase--preserve-merges.sh  |  2 ++\n 5 files changed, 26 insertions(+), 19 deletions(-)\n\n\nbase-commit: 36eb1cb9cfe327583128a4b0abdf9516c2ca815b\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-158%2Fdscho%2Fdeprecate-rebase-p-v1\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-158/dscho/deprecate-rebase-p-v1\nPull-Request: https://github.com/gitgitgadget/git/pull/158\n-- \ngitgitgadget\n"},{"id":"370894","messageId":"6407430da7f75cb2385d243c9820ac8c2ea7fee3.1551952855.git.gitgitgadget@gmail.com","threadId":"50679","inReplyTo":"pull.158.git.gitgitgadget@gmail.com","subject":"[PATCH 1/1] rebase: deprecate --preserve-merges","fromName":"Johannes Schindelin via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2019-03-07T10:00:56Z","receivedAt":"2019-03-07T10:01:01Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"From: Johannes Schindelin <johannes.schindelin@gmx.de>\n\nWe have something much better now: --rebase-merges (which is a\ncomplete re-design --preserve-merges, with a lot of issues fixed such as\nthe inability to reorder commits with --preserve-merges).\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n Documentation/config/branch.txt |  6 +++---\n Documentation/config/pull.txt   |  6 +++---\n Documentation/git-rebase.txt    | 23 ++++++++++++-----------\n builtin/rebase.c                |  8 ++++++--\n git-rebase--preserve-merges.sh  |  2 ++\n 5 files changed, 26 insertions(+), 19 deletions(-)\n\ndiff --git a/Documentation/config/branch.txt b/Documentation/config/branch.txt\nindex 019d60ede2..8f4b3faadd 100644\n--- a/Documentation/config/branch.txt\n+++ b/Documentation/config/branch.txt\n@@ -85,9 +85,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'\n so that the local merge commits are included in the rebase (see\n linkgit:git-rebase[1] for details).\n +\n-When preserve, also pass `--preserve-merges` along to 'git rebase'\n-so that locally committed merge commits will not be flattened\n-by running 'git pull'.\n+When `preserve` (deprecated in favor of `merges`), also pass\n+`--preserve-merges` along to 'git rebase' so that locally committed merge\n+commits will not be flattened by running 'git pull'.\n +\n When the value is `interactive`, the rebase is run in interactive mode.\n +\ndiff --git a/Documentation/config/pull.txt b/Documentation/config/pull.txt\nindex bb23a9947d..b87cab31b3 100644\n--- a/Documentation/config/pull.txt\n+++ b/Documentation/config/pull.txt\n@@ -18,9 +18,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'\n so that the local merge commits are included in the rebase (see\n linkgit:git-rebase[1] for details).\n +\n-When preserve, also pass `--preserve-merges` along to 'git rebase'\n-so that locally committed merge commits will not be flattened\n-by running 'git pull'.\n+When `preserve` (deprecated in favor of `merges`), also pass\n+`--preserve-merges` along to 'git rebase' so that locally committed merge\n+commits will not be flattened by running 'git pull'.\n +\n When the value is `interactive`, the rebase is run in interactive mode.\n +\ndiff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt\nindex 5629ba4c5d..89202dbb93 100644\n--- a/Documentation/git-rebase.txt\n+++ b/Documentation/git-rebase.txt\n@@ -415,9 +415,9 @@ i.e. commits that would be excluded by gitlink:git-log[1]'s\n the `rebase-cousins` mode is turned on, such commits are instead rebased\n onto `<upstream>` (or `<onto>`, if specified).\n +\n-The `--rebase-merges` mode is similar in spirit to `--preserve-merges`, but\n-in contrast to that option works well in interactive rebases: commits can be\n-reordered, inserted and dropped at will.\n+The `--rebase-merges` mode is similar in spirit to the deprecated\n+`--preserve-merges`, but in contrast to that option works well in interactive\n+rebases: commits can be reordered, inserted and dropped at will.\n +\n It is currently only possible to recreate the merge commits using the\n `recursive` merge strategy; Different merge strategies can be used only via\n@@ -427,9 +427,10 @@ See also REBASING MERGES and INCOMPATIBLE OPTIONS below.\n \n -p::\n --preserve-merges::\n-\tRecreate merge commits instead of flattening the history by replaying\n-\tcommits a merge commit introduces. Merge conflict resolutions or manual\n-\tamendments to merge commits are not preserved.\n+\t[DEPRECATED: use --rebase-merges instead] Recreate merge commits\n+\tinstead of flattening the history by replaying commits a merge commit\n+\tintroduces. Merge conflict resolutions or manual amendments to merge\n+\tcommits are not preserved.\n +\n This uses the `--interactive` machinery internally, but combining it\n with the `--interactive` option explicitly is generally not a good\n@@ -1020,11 +1021,11 @@ merge cmake\n \n BUGS\n ----\n-The todo list presented by `--preserve-merges --interactive` does not\n-represent the topology of the revision graph.  Editing commits and\n-rewording their commit messages should work fine, but attempts to\n-reorder commits tend to produce counterintuitive results. Use\n-`--rebase-merges` in such scenarios instead.\n+The todo list presented by the deprecated `--preserve-merges --interactive`\n+does not represent the topology of the revision graph (use `--rebase-merges`\n+instead).  Editing commits and rewording their commit messages should work\n+fine, but attempts to reorder commits tend to produce counterintuitive results.\n+Use `--rebase-merges` in such scenarios instead.\n \n For example, an attempt to rearrange\n ------------\ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex 7c7bc13e91..c5f5edf321 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -1092,8 +1092,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG,\n \t\t\tparse_opt_interactive },\n \t\tOPT_SET_INT('p', \"preserve-merges\", &options.type,\n-\t\t\t    N_(\"try to recreate merges instead of ignoring \"\n-\t\t\t       \"them\"), REBASE_PRESERVE_MERGES),\n+\t\t\t    N_(\"(DEPRECATED) try to recreate merges instead of \"\n+\t\t\t       \"ignoring them\"), REBASE_PRESERVE_MERGES),\n \t\tOPT_BOOL(0, \"rerere-autoupdate\",\n \t\t\t &options.allow_rerere_autoupdate,\n \t\t\t N_(\"allow rerere to update index with resolved \"\n@@ -1204,6 +1204,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \t\tusage_with_options(builtin_rebase_usage,\n \t\t\t\t   builtin_rebase_options);\n \n+\tif (options.type == REBASE_PRESERVE_MERGES)\n+\t\twarning(_(\"--preserve-merges is deprecated in favor of \"\n+\t\t\t  \"--rebase-merges\"));\n+\n \tif (action != NO_ACTION && !in_progress)\n \t\tdie(_(\"No rebase in progress?\"));\n \tsetenv(GIT_REFLOG_ACTION_ENVIRONMENT, \"rebase\", 0);\ndiff --git a/git-rebase--preserve-merges.sh b/git-rebase--preserve-merges.sh\nindex afbb65765d..eab2e40dc6 100644\n--- a/git-rebase--preserve-merges.sh\n+++ b/git-rebase--preserve-merges.sh\n@@ -105,6 +105,8 @@ warn () {\n \tprintf '%s\\n' \"$*\" >&2\n }\n \n+warn \"git rebase --preserve-merges is deprecated. Use --rebase-merges instead.\"\n+\n # Output the commit message for the specified commit.\n commit_message () {\n \tgit cat-file commit \"$1\" | sed \"1,/^$/d\"\n-- \ngitgitgadget\n"},{"id":"370914","messageId":"3a418266-6506-d2c0-45d3-5f1c6f0375c6@gmail.com","threadId":"50679","inReplyTo":"6407430da7f75cb2385d243c9820ac8c2ea7fee3.1551952855.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 1/1] rebase: deprecate --preserve-merges","fromName":"Phillip Wood","fromEmail":"phillip.wood123@gmail.com","sentAt":"2019-03-07T16:25:45Z","receivedAt":"2019-03-07T16:25:51Z","isPatch":true,"sender":{"key":"phillip.wood@dunelm.org.uk","avatar":null},"body":"Hi Johannes\n\nIt's great to see this. Do we need the deprecation warning in both \nbuiltin/rebase.c and rebase--preserve-merges.sh? Won't that end up \nwarning twice - maybe that's a good thing but if we go for only one I \nprefer the wording in rebase--preserve-merges.sh\n\nBest Wishes\n\nPhillip\n\nOn 07/03/2019 10:00, Johannes Schindelin via GitGitGadget wrote:\n> From: Johannes Schindelin <johannes.schindelin@gmx.de>\n> \n> We have something much better now: --rebase-merges (which is a\n> complete re-design --preserve-merges, with a lot of issues fixed such as\n> the inability to reorder commits with --preserve-merges).\n> \n> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> ---\n>   Documentation/config/branch.txt |  6 +++---\n>   Documentation/config/pull.txt   |  6 +++---\n>   Documentation/git-rebase.txt    | 23 ++++++++++++-----------\n>   builtin/rebase.c                |  8 ++++++--\n>   git-rebase--preserve-merges.sh  |  2 ++\n>   5 files changed, 26 insertions(+), 19 deletions(-)\n> \n> diff --git a/Documentation/config/branch.txt b/Documentation/config/branch.txt\n> index 019d60ede2..8f4b3faadd 100644\n> --- a/Documentation/config/branch.txt\n> +++ b/Documentation/config/branch.txt\n> @@ -85,9 +85,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'\n>   so that the local merge commits are included in the rebase (see\n>   linkgit:git-rebase[1] for details).\n>   +\n> -When preserve, also pass `--preserve-merges` along to 'git rebase'\n> -so that locally committed merge commits will not be flattened\n> -by running 'git pull'.\n> +When `preserve` (deprecated in favor of `merges`), also pass\n> +`--preserve-merges` along to 'git rebase' so that locally committed merge\n> +commits will not be flattened by running 'git pull'.\n>   +\n>   When the value is `interactive`, the rebase is run in interactive mode.\n>   +\n> diff --git a/Documentation/config/pull.txt b/Documentation/config/pull.txt\n> index bb23a9947d..b87cab31b3 100644\n> --- a/Documentation/config/pull.txt\n> +++ b/Documentation/config/pull.txt\n> @@ -18,9 +18,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'\n>   so that the local merge commits are included in the rebase (see\n>   linkgit:git-rebase[1] for details).\n>   +\n> -When preserve, also pass `--preserve-merges` along to 'git rebase'\n> -so that locally committed merge commits will not be flattened\n> -by running 'git pull'.\n> +When `preserve` (deprecated in favor of `merges`), also pass\n> +`--preserve-merges` along to 'git rebase' so that locally committed merge\n> +commits will not be flattened by running 'git pull'.\n>   +\n>   When the value is `interactive`, the rebase is run in interactive mode.\n>   +\n> diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt\n> index 5629ba4c5d..89202dbb93 100644\n> --- a/Documentation/git-rebase.txt\n> +++ b/Documentation/git-rebase.txt\n> @@ -415,9 +415,9 @@ i.e. commits that would be excluded by gitlink:git-log[1]'s\n>   the `rebase-cousins` mode is turned on, such commits are instead rebased\n>   onto `<upstream>` (or `<onto>`, if specified).\n>   +\n> -The `--rebase-merges` mode is similar in spirit to `--preserve-merges`, but\n> -in contrast to that option works well in interactive rebases: commits can be\n> -reordered, inserted and dropped at will.\n> +The `--rebase-merges` mode is similar in spirit to the deprecated\n> +`--preserve-merges`, but in contrast to that option works well in interactive\n> +rebases: commits can be reordered, inserted and dropped at will.\n>   +\n>   It is currently only possible to recreate the merge commits using the\n>   `recursive` merge strategy; Different merge strategies can be used only via\n> @@ -427,9 +427,10 @@ See also REBASING MERGES and INCOMPATIBLE OPTIONS below.\n>   \n>   -p::\n>   --preserve-merges::\n> -\tRecreate merge commits instead of flattening the history by replaying\n> -\tcommits a merge commit introduces. Merge conflict resolutions or manual\n> -\tamendments to merge commits are not preserved.\n> +\t[DEPRECATED: use --rebase-merges instead] Recreate merge commits\n> +\tinstead of flattening the history by replaying commits a merge commit\n> +\tintroduces. Merge conflict resolutions or manual amendments to merge\n> +\tcommits are not preserved.\n>   +\n>   This uses the `--interactive` machinery internally, but combining it\n>   with the `--interactive` option explicitly is generally not a good\n> @@ -1020,11 +1021,11 @@ merge cmake\n>   \n>   BUGS\n>   ----\n> -The todo list presented by `--preserve-merges --interactive` does not\n> -represent the topology of the revision graph.  Editing commits and\n> -rewording their commit messages should work fine, but attempts to\n> -reorder commits tend to produce counterintuitive results. Use\n> -`--rebase-merges` in such scenarios instead.\n> +The todo list presented by the deprecated `--preserve-merges --interactive`\n> +does not represent the topology of the revision graph (use `--rebase-merges`\n> +instead).  Editing commits and rewording their commit messages should work\n> +fine, but attempts to reorder commits tend to produce counterintuitive results.\n> +Use `--rebase-merges` in such scenarios instead.\n>   \n>   For example, an attempt to rearrange\n>   ------------\n> diff --git a/builtin/rebase.c b/builtin/rebase.c\n> index 7c7bc13e91..c5f5edf321 100644\n> --- a/builtin/rebase.c\n> +++ b/builtin/rebase.c\n> @@ -1092,8 +1092,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n>   \t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG,\n>   \t\t\tparse_opt_interactive },\n>   \t\tOPT_SET_INT('p', \"preserve-merges\", &options.type,\n> -\t\t\t    N_(\"try to recreate merges instead of ignoring \"\n> -\t\t\t       \"them\"), REBASE_PRESERVE_MERGES),\n> +\t\t\t    N_(\"(DEPRECATED) try to recreate merges instead of \"\n> +\t\t\t       \"ignoring them\"), REBASE_PRESERVE_MERGES),\n>   \t\tOPT_BOOL(0, \"rerere-autoupdate\",\n>   \t\t\t &options.allow_rerere_autoupdate,\n>   \t\t\t N_(\"allow rerere to update index with resolved \"\n> @@ -1204,6 +1204,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n>   \t\tusage_with_options(builtin_rebase_usage,\n>   \t\t\t\t   builtin_rebase_options);\n>   \n> +\tif (options.type == REBASE_PRESERVE_MERGES)\n> +\t\twarning(_(\"--preserve-merges is deprecated in favor of \"\n> +\t\t\t  \"--rebase-merges\"));\n> +\n>   \tif (action != NO_ACTION && !in_progress)\n>   \t\tdie(_(\"No rebase in progress?\"));\n>   \tsetenv(GIT_REFLOG_ACTION_ENVIRONMENT, \"rebase\", 0);\n> diff --git a/git-rebase--preserve-merges.sh b/git-rebase--preserve-merges.sh\n> index afbb65765d..eab2e40dc6 100644\n> --- a/git-rebase--preserve-merges.sh\n> +++ b/git-rebase--preserve-merges.sh\n> @@ -105,6 +105,8 @@ warn () {\n>   \tprintf '%s\\n' \"$*\" >&2\n>   }\n>   \n> +warn \"git rebase --preserve-merges is deprecated. Use --rebase-merges instead.\"\n> +\n>   # Output the commit message for the specified commit.\n>   commit_message () {\n>   \tgit cat-file commit \"$1\" | sed \"1,/^$/d\"\n> \n"},{"id":"370915","messageId":"CAPig+cSTtn6ON3rMeno+0ikOER6gq2bF=ktC-ehcaCo1pMd3MQ@mail.gmail.com","threadId":"50679","inReplyTo":"6407430da7f75cb2385d243c9820ac8c2ea7fee3.1551952855.git.gitgitgadget@gmail.com","subject":"Re: [PATCH 1/1] rebase: deprecate --preserve-merges","fromName":"Eric Sunshine","fromEmail":"sunshine@sunshineco.com","sentAt":"2019-03-07T16:47:52Z","receivedAt":"2019-03-07T16:48:06Z","isPatch":true,"sender":{"key":"sunshine@sunshineco.com","avatar":"https://avatars.githubusercontent.com/u/163641?v=4"},"body":"On Thu, Mar 7, 2019 at 6:11 AM Johannes Schindelin via GitGitGadget\n<gitgitgadget@gmail.com> wrote:\n> We have something much better now: --rebase-merges (which is a\n> complete re-design --preserve-merges, with a lot of issues fixed such as\n> the inability to reorder commits with --preserve-merges).\n>\n> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> ---\n> diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt\n> @@ -427,9 +427,10 @@ See also REBASING MERGES and INCOMPATIBLE OPTIONS below.\n>  --preserve-merges::\n> +       [DEPRECATED: use --rebase-merges instead] Recreate merge commits\n\ns/--rebase-merges/`&`/\n\n> +       instead of flattening the history by replaying commits a merge commit\n> +       introduces. Merge conflict resolutions or manual amendments to merge\n> +       commits are not preserved.\n"},{"id":"371180","messageId":"nycvar.QRO.7.76.6.1903112025470.41@tvgsbejvaqbjf.bet","threadId":"50679","inReplyTo":"3a418266-6506-d2c0-45d3-5f1c6f0375c6@gmail.com","subject":"Re: [PATCH 1/1] rebase: deprecate --preserve-merges","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-03-11T19:31:47Z","receivedAt":"2019-03-11T19:32:15Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Phillip,\n\nOn Thu, 7 Mar 2019, Phillip Wood wrote:\n\n> It's great to see this. Do we need the deprecation warning in both\n> builtin/rebase.c and rebase--preserve-merges.sh? Won't that end up warning\n> twice - maybe that's a good thing but if we go for only one I prefer the\n> wording in rebase--preserve-merges.sh\n\nGood point.\n\nI also considered adding a warning to the todo list, in case the rebase is\nrun interactively, but that would have required way too many changes in\nthe test suite (the test cases using `FAKE_LINES` select lines from the\ntodo list based on their line number, not their content, which does not\nplay well with inserting 3 lines with a warning at the beginning of the\ntodo list).\n\nCiao,\nDscho\n\n> \n> Best Wishes\n> \n> Phillip\n> \n> On 07/03/2019 10:00, Johannes Schindelin via GitGitGadget wrote:\n> > From: Johannes Schindelin <johannes.schindelin@gmx.de>\n> > \n> > We have something much better now: --rebase-merges (which is a\n> > complete re-design --preserve-merges, with a lot of issues fixed such as\n> > the inability to reorder commits with --preserve-merges).\n> > \n> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> > ---\n> >   Documentation/config/branch.txt |  6 +++---\n> >   Documentation/config/pull.txt   |  6 +++---\n> >   Documentation/git-rebase.txt    | 23 ++++++++++++-----------\n> >   builtin/rebase.c                |  8 ++++++--\n> >   git-rebase--preserve-merges.sh  |  2 ++\n> >   5 files changed, 26 insertions(+), 19 deletions(-)\n> > \n> > diff --git a/Documentation/config/branch.txt\n> > b/Documentation/config/branch.txt\n> > index 019d60ede2..8f4b3faadd 100644\n> > --- a/Documentation/config/branch.txt\n> > +++ b/Documentation/config/branch.txt\n> > @@ -85,9 +85,9 @@ When `merges`, pass the `--rebase-merges` option to 'git\n> > rebase'\n> >   so that the local merge commits are included in the rebase (see\n> >   linkgit:git-rebase[1] for details).\n> >   +\n> > -When preserve, also pass `--preserve-merges` along to 'git rebase'\n> > -so that locally committed merge commits will not be flattened\n> > -by running 'git pull'.\n> > +When `preserve` (deprecated in favor of `merges`), also pass\n> > +`--preserve-merges` along to 'git rebase' so that locally committed merge\n> > +commits will not be flattened by running 'git pull'.\n> >   +\n> >   When the value is `interactive`, the rebase is run in interactive mode.\n> >   +\n> > diff --git a/Documentation/config/pull.txt b/Documentation/config/pull.txt\n> > index bb23a9947d..b87cab31b3 100644\n> > --- a/Documentation/config/pull.txt\n> > +++ b/Documentation/config/pull.txt\n> > @@ -18,9 +18,9 @@ When `merges`, pass the `--rebase-merges` option to 'git\n> > rebase'\n> >   so that the local merge commits are included in the rebase (see\n> >   linkgit:git-rebase[1] for details).\n> >   +\n> > -When preserve, also pass `--preserve-merges` along to 'git rebase'\n> > -so that locally committed merge commits will not be flattened\n> > -by running 'git pull'.\n> > +When `preserve` (deprecated in favor of `merges`), also pass\n> > +`--preserve-merges` along to 'git rebase' so that locally committed merge\n> > +commits will not be flattened by running 'git pull'.\n> >   +\n> >   When the value is `interactive`, the rebase is run in interactive mode.\n> >   +\n> > diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt\n> > index 5629ba4c5d..89202dbb93 100644\n> > --- a/Documentation/git-rebase.txt\n> > +++ b/Documentation/git-rebase.txt\n> > @@ -415,9 +415,9 @@ i.e. commits that would be excluded by\n> > gitlink:git-log[1]'s\n> >   the `rebase-cousins` mode is turned on, such commits are instead rebased\n> >   onto `<upstream>` (or `<onto>`, if specified).\n> >   +\n> > -The `--rebase-merges` mode is similar in spirit to `--preserve-merges`, but\n> > -in contrast to that option works well in interactive rebases: commits can\n> > be\n> > -reordered, inserted and dropped at will.\n> > +The `--rebase-merges` mode is similar in spirit to the deprecated\n> > +`--preserve-merges`, but in contrast to that option works well in\n> > interactive\n> > +rebases: commits can be reordered, inserted and dropped at will.\n> >   +\n> >   It is currently only possible to recreate the merge commits using the\n> >   `recursive` merge strategy; Different merge strategies can be used only\n> >   via\n> > @@ -427,9 +427,10 @@ See also REBASING MERGES and INCOMPATIBLE OPTIONS\n> > below.\n> >   \n> >   -p::\n> >   --preserve-merges::\n> > -\tRecreate merge commits instead of flattening the history by replaying\n> > -\tcommits a merge commit introduces. Merge conflict resolutions or\n> > manual\n> > -\tamendments to merge commits are not preserved.\n> > +\t[DEPRECATED: use --rebase-merges instead] Recreate merge commits\n> > +\tinstead of flattening the history by replaying commits a merge commit\n> > +\tintroduces. Merge conflict resolutions or manual amendments to merge\n> > +\tcommits are not preserved.\n> >   +\n> >   This uses the `--interactive` machinery internally, but combining it\n> >   with the `--interactive` option explicitly is generally not a good\n> > @@ -1020,11 +1021,11 @@ merge cmake\n> >   \n> >   BUGS\n> >   ----\n> > -The todo list presented by `--preserve-merges --interactive` does not\n> > -represent the topology of the revision graph.  Editing commits and\n> > -rewording their commit messages should work fine, but attempts to\n> > -reorder commits tend to produce counterintuitive results. Use\n> > -`--rebase-merges` in such scenarios instead.\n> > +The todo list presented by the deprecated `--preserve-merges --interactive`\n> > +does not represent the topology of the revision graph (use\n> > `--rebase-merges`\n> > +instead).  Editing commits and rewording their commit messages should work\n> > +fine, but attempts to reorder commits tend to produce counterintuitive\n> > results.\n> > +Use `--rebase-merges` in such scenarios instead.\n> >   \n> >   For example, an attempt to rearrange\n> >   ------------\n> > diff --git a/builtin/rebase.c b/builtin/rebase.c\n> > index 7c7bc13e91..c5f5edf321 100644\n> > --- a/builtin/rebase.c\n> > +++ b/builtin/rebase.c\n> > @@ -1092,8 +1092,8 @@ int cmd_rebase(int argc, const char **argv, const char\n> > *prefix)\n> >      PARSE_OPT_NOARG | PARSE_OPT_NONEG,\n> >      parse_opt_interactive },\n> >   \t\tOPT_SET_INT('p', \"preserve-merges\", &options.type,\n> > -\t\t\t    N_(\"try to recreate merges instead of ignoring \"\n> > -\t\t\t       \"them\"), REBASE_PRESERVE_MERGES),\n> > +\t\t\t    N_(\"(DEPRECATED) try to recreate merges instead of\n> > \"\n> > +\t\t\t       \"ignoring them\"), REBASE_PRESERVE_MERGES),\n> >     OPT_BOOL(0, \"rerere-autoupdate\",\n> >       &options.allow_rerere_autoupdate,\n> >       N_(\"allow rerere to update index with resolved \"\n> > @@ -1204,6 +1204,10 @@ int cmd_rebase(int argc, const char **argv, const\n> > char *prefix)\n> >     usage_with_options(builtin_rebase_usage,\n> >          builtin_rebase_options);\n> >   +\tif (options.type == REBASE_PRESERVE_MERGES)\n> > +\t\twarning(_(\"--preserve-merges is deprecated in favor of \"\n> > +\t\t\t  \"--rebase-merges\"));\n> > +\n> >    if (action != NO_ACTION && !in_progress)\n> >    \tdie(_(\"No rebase in progress?\"));\n> >   \tsetenv(GIT_REFLOG_ACTION_ENVIRONMENT, \"rebase\", 0);\n> > diff --git a/git-rebase--preserve-merges.sh b/git-rebase--preserve-merges.sh\n> > index afbb65765d..eab2e40dc6 100644\n> > --- a/git-rebase--preserve-merges.sh\n> > +++ b/git-rebase--preserve-merges.sh\n> > @@ -105,6 +105,8 @@ warn () {\n> >   \tprintf '%s\\n' \"$*\" >&2\n> >   }\n> >   \n> > +warn \"git rebase --preserve-merges is deprecated. Use --rebase-merges\n> > instead.\"\n> > +\n> >   # Output the commit message for the specified commit.\n> >   commit_message () {\n> >    git cat-file commit \"$1\" | sed \"1,/^$/d\"\n> > \n> \n"},{"id":"371181","messageId":"nycvar.QRO.7.76.6.1903112032540.41@tvgsbejvaqbjf.bet","threadId":"50679","inReplyTo":"CAPig+cSTtn6ON3rMeno+0ikOER6gq2bF=ktC-ehcaCo1pMd3MQ@mail.gmail.com","subject":"Re: [PATCH 1/1] rebase: deprecate --preserve-merges","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-03-11T19:33:14Z","receivedAt":"2019-03-11T19:33:38Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Eric,\n\nOn Thu, 7 Mar 2019, Eric Sunshine wrote:\n\n> On Thu, Mar 7, 2019 at 6:11 AM Johannes Schindelin via GitGitGadget\n> <gitgitgadget@gmail.com> wrote:\n> > We have something much better now: --rebase-merges (which is a\n> > complete re-design --preserve-merges, with a lot of issues fixed such as\n> > the inability to reorder commits with --preserve-merges).\n> >\n> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> > ---\n> > diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt\n> > @@ -427,9 +427,10 @@ See also REBASING MERGES and INCOMPATIBLE OPTIONS below.\n> >  --preserve-merges::\n> > +       [DEPRECATED: use --rebase-merges instead] Recreate merge commits\n> \n> s/--rebase-merges/`&`/\n\nGood point!\n\nThanks,\nDscho\n\n> \n> > +       instead of flattening the history by replaying commits a merge commit\n> > +       introduces. Merge conflict resolutions or manual amendments to merge\n> > +       commits are not preserved.\n> \n"},{"id":"371184","messageId":"f6990f28c028e04c5d237878d7fbb2160dd7dac9.1552334254.git.gitgitgadget@gmail.com","threadId":"50679","inReplyTo":"pull.158.v2.git.gitgitgadget@gmail.com","subject":"[PATCH v2 1/1] rebase: deprecate --preserve-merges","fromName":"Johannes Schindelin via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2019-03-11T19:57:35Z","receivedAt":"2019-03-11T19:57:41Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"From: Johannes Schindelin <johannes.schindelin@gmx.de>\n\nWe have something much better now: --rebase-merges (which is a\ncomplete re-design --preserve-merges, with a lot of issues fixed such as\nthe inability to reorder commits with --preserve-merges).\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n---\n Documentation/config/branch.txt |  6 +++---\n Documentation/config/pull.txt   |  6 +++---\n Documentation/git-rebase.txt    | 23 ++++++++++++-----------\n builtin/rebase.c                |  8 ++++++--\n 4 files changed, 24 insertions(+), 19 deletions(-)\n\ndiff --git a/Documentation/config/branch.txt b/Documentation/config/branch.txt\nindex 019d60ede2..8f4b3faadd 100644\n--- a/Documentation/config/branch.txt\n+++ b/Documentation/config/branch.txt\n@@ -85,9 +85,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'\n so that the local merge commits are included in the rebase (see\n linkgit:git-rebase[1] for details).\n +\n-When preserve, also pass `--preserve-merges` along to 'git rebase'\n-so that locally committed merge commits will not be flattened\n-by running 'git pull'.\n+When `preserve` (deprecated in favor of `merges`), also pass\n+`--preserve-merges` along to 'git rebase' so that locally committed merge\n+commits will not be flattened by running 'git pull'.\n +\n When the value is `interactive`, the rebase is run in interactive mode.\n +\ndiff --git a/Documentation/config/pull.txt b/Documentation/config/pull.txt\nindex bb23a9947d..b87cab31b3 100644\n--- a/Documentation/config/pull.txt\n+++ b/Documentation/config/pull.txt\n@@ -18,9 +18,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'\n so that the local merge commits are included in the rebase (see\n linkgit:git-rebase[1] for details).\n +\n-When preserve, also pass `--preserve-merges` along to 'git rebase'\n-so that locally committed merge commits will not be flattened\n-by running 'git pull'.\n+When `preserve` (deprecated in favor of `merges`), also pass\n+`--preserve-merges` along to 'git rebase' so that locally committed merge\n+commits will not be flattened by running 'git pull'.\n +\n When the value is `interactive`, the rebase is run in interactive mode.\n +\ndiff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt\nindex 6363d674b7..44e00329e1 100644\n--- a/Documentation/git-rebase.txt\n+++ b/Documentation/git-rebase.txt\n@@ -415,9 +415,9 @@ i.e. commits that would be excluded by linkgit:git-log[1]'s\n the `rebase-cousins` mode is turned on, such commits are instead rebased\n onto `<upstream>` (or `<onto>`, if specified).\n +\n-The `--rebase-merges` mode is similar in spirit to `--preserve-merges`, but\n-in contrast to that option works well in interactive rebases: commits can be\n-reordered, inserted and dropped at will.\n+The `--rebase-merges` mode is similar in spirit to the deprecated\n+`--preserve-merges`, but in contrast to that option works well in interactive\n+rebases: commits can be reordered, inserted and dropped at will.\n +\n It is currently only possible to recreate the merge commits using the\n `recursive` merge strategy; Different merge strategies can be used only via\n@@ -427,9 +427,10 @@ See also REBASING MERGES and INCOMPATIBLE OPTIONS below.\n \n -p::\n --preserve-merges::\n-\tRecreate merge commits instead of flattening the history by replaying\n-\tcommits a merge commit introduces. Merge conflict resolutions or manual\n-\tamendments to merge commits are not preserved.\n+\t[DEPRECATED: use `--rebase-merges` instead] Recreate merge commits\n+\tinstead of flattening the history by replaying commits a merge commit\n+\tintroduces. Merge conflict resolutions or manual amendments to merge\n+\tcommits are not preserved.\n +\n This uses the `--interactive` machinery internally, but combining it\n with the `--interactive` option explicitly is generally not a good\n@@ -1020,11 +1021,11 @@ merge cmake\n \n BUGS\n ----\n-The todo list presented by `--preserve-merges --interactive` does not\n-represent the topology of the revision graph.  Editing commits and\n-rewording their commit messages should work fine, but attempts to\n-reorder commits tend to produce counterintuitive results. Use\n-`--rebase-merges` in such scenarios instead.\n+The todo list presented by the deprecated `--preserve-merges --interactive`\n+does not represent the topology of the revision graph (use `--rebase-merges`\n+instead).  Editing commits and rewording their commit messages should work\n+fine, but attempts to reorder commits tend to produce counterintuitive results.\n+Use `--rebase-merges` in such scenarios instead.\n \n For example, an attempt to rearrange\n ------------\ndiff --git a/builtin/rebase.c b/builtin/rebase.c\nindex 52114cbf0d..21ac10f739 100644\n--- a/builtin/rebase.c\n+++ b/builtin/rebase.c\n@@ -1100,8 +1100,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG,\n \t\t\tparse_opt_interactive },\n \t\tOPT_SET_INT('p', \"preserve-merges\", &options.type,\n-\t\t\t    N_(\"try to recreate merges instead of ignoring \"\n-\t\t\t       \"them\"), REBASE_PRESERVE_MERGES),\n+\t\t\t    N_(\"(DEPRECATED) try to recreate merges instead of \"\n+\t\t\t       \"ignoring them\"), REBASE_PRESERVE_MERGES),\n \t\tOPT_BOOL(0, \"rerere-autoupdate\",\n \t\t\t &options.allow_rerere_autoupdate,\n \t\t\t N_(\"allow rerere to update index with resolved \"\n@@ -1212,6 +1212,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n \t\tusage_with_options(builtin_rebase_usage,\n \t\t\t\t   builtin_rebase_options);\n \n+\tif (options.type == REBASE_PRESERVE_MERGES)\n+\t\twarning(_(\"git rebase --preserve-merges is deprecated. \"\n+\t\t\t  \"Use --rebase-merges instead.\"));\n+\n \tif (action != NO_ACTION && !in_progress)\n \t\tdie(_(\"No rebase in progress?\"));\n \tsetenv(GIT_REFLOG_ACTION_ENVIRONMENT, \"rebase\", 0);\n-- \ngitgitgadget\n"},{"id":"371185","messageId":"pull.158.v2.git.gitgitgadget@gmail.com","threadId":"50679","inReplyTo":"pull.158.git.gitgitgadget@gmail.com","subject":"[PATCH v2 0/1] Deprecate git rebase --preserve-merges","fromName":"Johannes Schindelin via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2019-03-11T19:57:35Z","receivedAt":"2019-03-11T19:57:42Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"It had a good run, but its design was irreparably limited. So I came up with\na redesign:--rebase-merges. It seems to work all right, so now it is time to\nstart letting go of the previous design.\n\nChanges since v1:\n\n * The term --rebase-merges is now marked as such in the deprecation notice\n   in git rebase's manual.\n * The deprecation warning is now printed only in builtin/rebase.c, not\n   repeated in git-rebase--preserve-merges.sh.\n\nJohannes Schindelin (1):\n  rebase: deprecate --preserve-merges\n\n Documentation/config/branch.txt |  6 +++---\n Documentation/config/pull.txt   |  6 +++---\n Documentation/git-rebase.txt    | 23 ++++++++++++-----------\n builtin/rebase.c                |  8 ++++++--\n 4 files changed, 24 insertions(+), 19 deletions(-)\n\n\nbase-commit: e902e9bcae2010bc42648c80ab6adc6c5a16a4a5\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-158%2Fdscho%2Fdeprecate-rebase-p-v2\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-158/dscho/deprecate-rebase-p-v2\nPull-Request: https://github.com/gitgitgadget/git/pull/158\n\nRange-diff vs v1:\n\n 1:  6407430da7 ! 1:  f6990f28c0 rebase: deprecate --preserve-merges\n     @@ -65,7 +65,7 @@\n      -\tRecreate merge commits instead of flattening the history by replaying\n      -\tcommits a merge commit introduces. Merge conflict resolutions or manual\n      -\tamendments to merge commits are not preserved.\n     -+\t[DEPRECATED: use --rebase-merges instead] Recreate merge commits\n     ++\t[DEPRECATED: use `--rebase-merges` instead] Recreate merge commits\n      +\tinstead of flattening the history by replaying commits a merge commit\n      +\tintroduces. Merge conflict resolutions or manual amendments to merge\n      +\tcommits are not preserved.\n     @@ -109,22 +109,9 @@\n       \t\t\t\t   builtin_rebase_options);\n       \n      +\tif (options.type == REBASE_PRESERVE_MERGES)\n     -+\t\twarning(_(\"--preserve-merges is deprecated in favor of \"\n     -+\t\t\t  \"--rebase-merges\"));\n     ++\t\twarning(_(\"git rebase --preserve-merges is deprecated. \"\n     ++\t\t\t  \"Use --rebase-merges instead.\"));\n      +\n       \tif (action != NO_ACTION && !in_progress)\n       \t\tdie(_(\"No rebase in progress?\"));\n       \tsetenv(GIT_REFLOG_ACTION_ENVIRONMENT, \"rebase\", 0);\n     -\n     - diff --git a/git-rebase--preserve-merges.sh b/git-rebase--preserve-merges.sh\n     - --- a/git-rebase--preserve-merges.sh\n     - +++ b/git-rebase--preserve-merges.sh\n     -@@\n     - \tprintf '%s\\n' \"$*\" >&2\n     - }\n     - \n     -+warn \"git rebase --preserve-merges is deprecated. Use --rebase-merges instead.\"\n     -+\n     - # Output the commit message for the specified commit.\n     - commit_message () {\n     - \tgit cat-file commit \"$1\" | sed \"1,/^$/d\"\n\n-- \ngitgitgadget\n"},{"id":"374831","messageId":"87imusj4cv.fsf@evledraar.gmail.com","threadId":"50679","inReplyTo":"f6990f28c028e04c5d237878d7fbb2160dd7dac9.1552334254.git.gitgitgadget@gmail.com","subject":"Re: [PATCH v2 1/1] rebase: deprecate --preserve-merges","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2019-05-02T14:52:32Z","receivedAt":"2019-05-02T14:52:38Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Mon, Mar 11 2019, Johannes Schindelin via GitGitGadget wrote:\n\n> From: Johannes Schindelin <johannes.schindelin@gmx.de>\n>\n> We have something much better now: --rebase-merges (which is a\n> complete re-design --preserve-merges, with a lot of issues fixed such as\n> the inability to reorder commits with --preserve-merges).\n>\n> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>\n> ---\n>  Documentation/config/branch.txt |  6 +++---\n>  Documentation/config/pull.txt   |  6 +++---\n>  Documentation/git-rebase.txt    | 23 ++++++++++++-----------\n>  builtin/rebase.c                |  8 ++++++--\n>  4 files changed, 24 insertions(+), 19 deletions(-)\n>\n> diff --git a/Documentation/config/branch.txt b/Documentation/config/branch.txt\n> index 019d60ede2..8f4b3faadd 100644\n> --- a/Documentation/config/branch.txt\n> +++ b/Documentation/config/branch.txt\n> @@ -85,9 +85,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'\n>  so that the local merge commits are included in the rebase (see\n>  linkgit:git-rebase[1] for details).\n>  +\n> -When preserve, also pass `--preserve-merges` along to 'git rebase'\n> -so that locally committed merge commits will not be flattened\n> -by running 'git pull'.\n> +When `preserve` (deprecated in favor of `merges`), also pass\n> +`--preserve-merges` along to 'git rebase' so that locally committed merge\n> +commits will not be flattened by running 'git pull'.\n>  +\n>  When the value is `interactive`, the rebase is run in interactive mode.\n>  +\n> diff --git a/Documentation/config/pull.txt b/Documentation/config/pull.txt\n> index bb23a9947d..b87cab31b3 100644\n> --- a/Documentation/config/pull.txt\n> +++ b/Documentation/config/pull.txt\n> @@ -18,9 +18,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'\n>  so that the local merge commits are included in the rebase (see\n>  linkgit:git-rebase[1] for details).\n>  +\n> -When preserve, also pass `--preserve-merges` along to 'git rebase'\n> -so that locally committed merge commits will not be flattened\n> -by running 'git pull'.\n> +When `preserve` (deprecated in favor of `merges`), also pass\n> +`--preserve-merges` along to 'git rebase' so that locally committed merge\n> +commits will not be flattened by running 'git pull'.\n>  +\n>  When the value is `interactive`, the rebase is run in interactive mode.\n>  +\n> diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt\n> index 6363d674b7..44e00329e1 100644\n> --- a/Documentation/git-rebase.txt\n> +++ b/Documentation/git-rebase.txt\n> @@ -415,9 +415,9 @@ i.e. commits that would be excluded by linkgit:git-log[1]'s\n>  the `rebase-cousins` mode is turned on, such commits are instead rebased\n>  onto `<upstream>` (or `<onto>`, if specified).\n>  +\n> -The `--rebase-merges` mode is similar in spirit to `--preserve-merges`, but\n> -in contrast to that option works well in interactive rebases: commits can be\n> -reordered, inserted and dropped at will.\n> +The `--rebase-merges` mode is similar in spirit to the deprecated\n> +`--preserve-merges`, but in contrast to that option works well in interactive\n> +rebases: commits can be reordered, inserted and dropped at will.\n>  +\n>  It is currently only possible to recreate the merge commits using the\n>  `recursive` merge strategy; Different merge strategies can be used only via\n> @@ -427,9 +427,10 @@ See also REBASING MERGES and INCOMPATIBLE OPTIONS below.\n>\n>  -p::\n>  --preserve-merges::\n> -\tRecreate merge commits instead of flattening the history by replaying\n> -\tcommits a merge commit introduces. Merge conflict resolutions or manual\n> -\tamendments to merge commits are not preserved.\n> +\t[DEPRECATED: use `--rebase-merges` instead] Recreate merge commits\n> +\tinstead of flattening the history by replaying commits a merge commit\n> +\tintroduces. Merge conflict resolutions or manual amendments to merge\n> +\tcommits are not preserved.\n>  +\n>  This uses the `--interactive` machinery internally, but combining it\n>  with the `--interactive` option explicitly is generally not a good\n> @@ -1020,11 +1021,11 @@ merge cmake\n>\n>  BUGS\n>  ----\n> -The todo list presented by `--preserve-merges --interactive` does not\n> -represent the topology of the revision graph.  Editing commits and\n> -rewording their commit messages should work fine, but attempts to\n> -reorder commits tend to produce counterintuitive results. Use\n> -`--rebase-merges` in such scenarios instead.\n> +The todo list presented by the deprecated `--preserve-merges --interactive`\n> +does not represent the topology of the revision graph (use `--rebase-merges`\n> +instead).  Editing commits and rewording their commit messages should work\n> +fine, but attempts to reorder commits tend to produce counterintuitive results.\n> +Use `--rebase-merges` in such scenarios instead.\n>\n>  For example, an attempt to rearrange\n>  ------------\n> diff --git a/builtin/rebase.c b/builtin/rebase.c\n> index 52114cbf0d..21ac10f739 100644\n> --- a/builtin/rebase.c\n> +++ b/builtin/rebase.c\n> @@ -1100,8 +1100,8 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n>  \t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG,\n>  \t\t\tparse_opt_interactive },\n>  \t\tOPT_SET_INT('p', \"preserve-merges\", &options.type,\n> -\t\t\t    N_(\"try to recreate merges instead of ignoring \"\n> -\t\t\t       \"them\"), REBASE_PRESERVE_MERGES),\n> +\t\t\t    N_(\"(DEPRECATED) try to recreate merges instead of \"\n> +\t\t\t       \"ignoring them\"), REBASE_PRESERVE_MERGES),\n>  \t\tOPT_BOOL(0, \"rerere-autoupdate\",\n>  \t\t\t &options.allow_rerere_autoupdate,\n>  \t\t\t N_(\"allow rerere to update index with resolved \"\n> @@ -1212,6 +1212,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n>  \t\tusage_with_options(builtin_rebase_usage,\n>  \t\t\t\t   builtin_rebase_options);\n>\n> +\tif (options.type == REBASE_PRESERVE_MERGES)\n> +\t\twarning(_(\"git rebase --preserve-merges is deprecated. \"\n> +\t\t\t  \"Use --rebase-merges instead.\"));\n> +\n>  \tif (action != NO_ACTION && !in_progress)\n>  \t\tdie(_(\"No rebase in progress?\"));\n>  \tsetenv(GIT_REFLOG_ACTION_ENVIRONMENT, \"rebase\", 0);\n\nAn internal user reported the following \"bug\" they ran into:\n\n 1. They ran \"git pull --rebase=preserve\"\n 2. warning: git rebase --preserve-merges is deprecated. Use --rebase-merges instead.\n\nThis is very confusing, since the user issued \"--rebase=preserve\", *not*\n\"--preserve-merges\".\n\nWe could detect that we came from \"git pull\" and pass down the argv we\nused blah blah, but how about just describing things a bit more in the\nwarning, e.g.:\n\n    warning: the \"preserve\" backend for 'git rebase' has been\n    deprecated. You invoked git with \"rebase --preserve-merges\", either\n    directly, or via \"pull --rebase=preserve\".\n\n    Use the new \"rebase merges\" backend of \"git rebase\" instead, invoked\n    via \"rebase --rebase-merges\" or \"pull --rebase=merges\". Note that\n    the new backend may yield different results, see the \"git rebase\"\n    documentation for details.\n"},{"id":"375240","messageId":"nycvar.QRO.7.76.6.1905091630030.44@tvgsbejvaqbjf.bet","threadId":"50679","inReplyTo":"87imusj4cv.fsf@evledraar.gmail.com","subject":"Re: [PATCH v2 1/1] rebase: deprecate --preserve-merges","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-05-09T14:36:13Z","receivedAt":"2019-05-09T14:36:38Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Ævar,\n\nOn Thu, 2 May 2019, Ævar Arnfjörð Bjarmason wrote:\n\n> On Mon, Mar 11 2019, Johannes Schindelin via GitGitGadget wrote:\n>\n> > From: Johannes Schindelin <johannes.schindelin@gmx.de>\n> >\n> > @@ -1212,6 +1212,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)\n> >  \t\tusage_with_options(builtin_rebase_usage,\n> >  \t\t\t\t   builtin_rebase_options);\n> >\n> > +\tif (options.type == REBASE_PRESERVE_MERGES)\n> > +\t\twarning(_(\"git rebase --preserve-merges is deprecated. \"\n> > +\t\t\t  \"Use --rebase-merges instead.\"));\n> > +\n> >  \tif (action != NO_ACTION && !in_progress)\n> >  \t\tdie(_(\"No rebase in progress?\"));\n> >  \tsetenv(GIT_REFLOG_ACTION_ENVIRONMENT, \"rebase\", 0);\n>\n> An internal user reported the following \"bug\" they ran into:\n>\n>  1. They ran \"git pull --rebase=preserve\"\n>  2. warning: git rebase --preserve-merges is deprecated. Use --rebase-merges instead.\n>\n> This is very confusing, since the user issued \"--rebase=preserve\", *not*\n> \"--preserve-merges\".\n>\n> We could detect that we came from \"git pull\" and pass down the argv we\n> used blah blah, but how about just describing things a bit more in the\n> warning, e.g.:\n>\n>     warning: the \"preserve\" backend for 'git rebase' has been\n>     deprecated. You invoked git with \"rebase --preserve-merges\", either\n>     directly, or via \"pull --rebase=preserve\".\n>\n>     Use the new \"rebase merges\" backend of \"git rebase\" instead, invoked\n>     via \"rebase --rebase-merges\" or \"pull --rebase=merges\". Note that\n>     the new backend may yield different results, see the \"git rebase\"\n>     documentation for details.\n\nDon't forget `pull.rebase`.\n\nAnd the proposed text makes it sound as if the results of\n`--rebase=merges` is wrong, while I would contend that it is actually more\ncorrect than `--rebase=preserve`'s output.\n\nIn general, I do agree with the direction of making the description more\ngeneral rather than trying to teach `git-rebase--preserve-merges.sh` from\nwhere it was called and showing a different deprecation message.\n\nDo you want to take the lead on this? If so, be my guest, I still have to\nprepare Git for Windows for -rc0...\n\nCiao,\nDscho\n"}]}