Thread (52 messages) 52 messages, 4 authors, 2020-12-07

Re: [PATCH v2 09/14] pull: introduce --merge option

From: Elijah Newren <hidden>
Date: 2020-12-04 23:29:30

On Thu, Dec 3, 2020 at 10:16 PM Felipe Contreras
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
Previously --no-rebase (which still works for backwards compatbility).

Now we can update the default warning, and the git-pull(1) man page to
use --merge instead of the non-intuitive --no-rebase.

Signed-off-by: Felipe Contreras <redacted>
---
 Documentation/git-pull.txt   | 9 ++++++---
 builtin/pull.c               | 4 +++-
 t/t7601-merge-pull-config.sh | 4 ++--
 3 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/Documentation/git-pull.txt b/Documentation/git-pull.txt
index ad33d2472c..c220da143a 100644
--- a/Documentation/git-pull.txt
+++ b/Documentation/git-pull.txt
@@ -61,7 +61,7 @@ However, a non-fast-foward case looks very different.
 ------------

 By default `git pull` will warn about these situations, however, most likely
-you would want to force a merge, which you can do with `git pull --no-rebase`.
+you would want to force a merge, which you can do with `git pull --merge`.
I'm glad you updated all the references, but as noted earlier in the
series I think this suggestion is problematic.
quoted hunk ↗ jump to hunk
 Then "`git pull`" will fetch and replay the changes from the remote
 `master` branch since it diverged from the local `master` (i.e., `E`)
@@ -148,8 +148,11 @@ It rewrites history, which does not bode well when you
 published that history already.  Do *not* use this option
 unless you have read linkgit:git-rebase[1] carefully.

---no-rebase::
-       Override earlier --rebase.
+-m::
+--merge::
+       Force a merge.
++
+Previously this was --no-rebase, but that usage has been deprecated.

 Options related to fetching
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/builtin/pull.c b/builtin/pull.c
index b200f7544c..6ea95c9fc9 100644
--- a/builtin/pull.c
+++ b/builtin/pull.c
@@ -131,6 +131,8 @@ static struct option pull_options[] = {
                "(false|true|merges|preserve|interactive)",
                N_("incorporate changes by rebasing rather than merging"),
                PARSE_OPT_OPTARG, parse_opt_rebase),
+       OPT_SET_INT('m', "merge", &opt_rebase,
+               N_("incorporate changes by merging"), 0),
        OPT_PASSTHRU('n', NULL, &opt_diffstat, NULL,
                N_("do not show a diffstat at the end of the merge"),
                PARSE_OPT_NOARG | PARSE_OPT_NONEG),
@@ -1024,7 +1026,7 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
                        "\n"
                        "You can replace \"git config\" with \"git config --global\" to set a default\n"
                        "preference for all repositories.\n"
-                       "If unsure, run \"git pull --no-rebase\".\n"
+                       "If unsure, run \"git pull --merge\".\n"
This was the other problematic copy of that suggestion.
quoted hunk ↗ jump to hunk
                        "Read \"git pull --help\" for more information."
                        ));
        }
diff --git a/t/t7601-merge-pull-config.sh b/t/t7601-merge-pull-config.sh
index 6b4adab8b1..1de64e6cc5 100755
--- a/t/t7601-merge-pull-config.sh
+++ b/t/t7601-merge-pull-config.sh
@@ -69,9 +69,9 @@ test_expect_success 'pull.rebase not set and --rebase given' '
        test_i18ngrep ! "Pulling without specifying how to reconcile" err
 '

-test_expect_success 'pull.rebase not set and --no-rebase given' '
+test_expect_success 'pull.rebase not set and --merge given' '
        git reset --hard c2 &&
-       git pull --no-rebase . c1 2>err &&
+       git pull --merge . c1 2>err &&
        test_i18ngrep ! "Pulling without specifying how to reconcile" err
 '

--
2.29.2
I very much like the change in this patch, other than the obvious
couple places where you are just tweaking an earlier problematic
suggestion.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help