@@ -60,8 +60,8 @@ However, a non-fast-forward case looks very different.
origin/master in your repository
------------
-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 --merge`.
+By default `git pull` will fail on these situations, you will have to
+specify whether you want `--merge` or `--rebase`.
Then "`git pull`" will fetch and replay the changes from the remote
`master` branch since it diverged from the local `master` (i.e., `E`)
@@ -392,7 +392,7 @@ static enum pull_mode_type config_get_pull_mode(void)
if (!git_config_get_value("pull.mode", &value))
return parse_config_pull_mode("pull.mode", value);
- return PULL_MODE_DEFAULT;
+ return PULL_MODE_FF_ONLY;
}
/**
@@ -1091,23 +1091,6 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
if (mode == PULL_MODE_FF_ONLY && !can_ff)
die(_("The pull was not fast-forward, please either merge or rebase.\n"));
- if (!opt_rebase && !can_ff && opt_verbosity >= 0 && (!opt_ff || !strcmp(opt_ff, "--ff"))) {
- advise(_("The pull was not fast-forward, in the future you will have to choose a merge, or a rebase.\n"
- "\n"
- "To quell this message you have two main options:\n"
- "\n"
- "1. Adopt the new behavior:\n"
- "\n"
- " git config --global pull.mode ff-only\n"
- "\n"
- "2. Maintain the current behavior:\n"
- "\n"
- " git config --global pull.mode merge\n"
- "\n"
- "For now we will fall back to the traditional behavior (merge).\n"
- "Read \"git pull --help\" for more information."));
- }
-
if (opt_rebase >= REBASE_TRUE) {
int ret = 0;
@@ -879,39 +879,31 @@ setup_non_ff () {
setup_other master^
}
-test_expect_success 'fast-forward (pull.mode=ff-only)' '
+test_expect_success 'fast-forward (default)' '
setup_ff &&
- git -c pull.mode=ff-only pull
+ git pull
'
-test_expect_success 'non-fast-forward (pull.mode=ff-only)' '
+test_expect_success 'non-fast-forward (default)' '
setup_non_ff &&
- test_must_fail git -c pull.mode=ff-only pull
+ test_must_fail git pull
'
-test_expect_success 'non-fast-forward with merge (pull.mode=ff-only)' '
+test_expect_success 'non-fast-forward with merge (default)' '
setup_non_ff &&
- git -c pull.mode=ff-only pull --merge
+ git pull --merge
'
-test_expect_success 'non-fast-forward with rebase (pull.mode=ff-only)' '
+test_expect_success 'non-fast-forward with rebase (default)' '
setup_non_ff &&
- git -c pull.mode=ff-only pull --rebase
+ git pull --rebase
'
-test_expect_success 'non-fast-forward error message (pull.mode=ff-only)' '
+test_expect_success 'non-fast-forward error message (default)' '
setup_non_ff &&
- test_must_fail git -c pull.mode=ff-only pull 2> error &&
+ test_must_fail git pull 2> error &&
cat error &&
test_i18ngrep "The pull was not fast-forward" error
'
-test_expect_success 'non-fast-forward warning (default)' '
- setup_non_ff &&
- git pull 2> error &&
- cat error &&
- test_i18ngrep "The pull was not fast-forward" error &&
- test_i18ngrep "in the future you will have to choose" error
-'
-
test_done
@@ -27,78 +27,6 @@ test_expect_success 'setup' '
git tag c3
'
-test_expect_success 'pull.rebase not set' '
- git reset --hard c2 &&
- git -c color.advice=always pull . c1 2>err &&
- test_decode_color <err >decoded &&
- test_i18ngrep "<YELLOW>hint: " decoded &&
- test_i18ngrep "in the future you will have to choose" decoded
-'
-
-test_expect_success 'pull.rebase not set (fast-forward)' '
- git reset --hard c0 &&
- git pull . c1 2>err &&
- test_i18ngrep ! "in the future you will have to choose" err
-'
-
-test_expect_success 'pull.mode set' '
- git reset --hard c2 &&
- test_config pull.mode merge &&
- git pull . c1 2>err &&
- test_i18ngrep ! "in the future you will have to choose" err
-'
-
-test_expect_success 'pull.rebase not set and pull.ff=true' '
- git reset --hard c2 &&
- test_config pull.ff true &&
- git pull . c1 2>err &&
- test_i18ngrep "in the future you will have to choose" err
-'
-
-test_expect_success 'pull.rebase not set and pull.ff=false' '
- git reset --hard c2 &&
- test_config pull.ff false &&
- git pull . c1 2>err &&
- test_i18ngrep ! "in the future you will have to choose" err
-'
-
-test_expect_success 'pull.rebase not set and pull.ff=only' '
- git reset --hard c2 &&
- test_config pull.ff only &&
- test_must_fail git pull . c1 2>err &&
- test_i18ngrep ! "in the future you will have to choose" err
-'
-
-test_expect_success 'pull.rebase not set and --rebase given' '
- git reset --hard c2 &&
- git pull --rebase . c1 2>err &&
- test_i18ngrep ! "in the future you will have to choose" err
-'
-
-test_expect_success 'pull.rebase not set and --merge given' '
- git reset --hard c2 &&
- git pull --merge . c1 2>err &&
- test_i18ngrep ! "in the future you will have to choose" err
-'
-
-test_expect_success 'pull.rebase not set and --ff given' '
- git reset --hard c2 &&
- git pull --ff . c1 2>err &&
- test_i18ngrep "in the future you will have to choose" err
-'
-
-test_expect_success 'pull.rebase not set and --no-ff given' '
- git reset --hard c2 &&
- git pull --no-ff . c1 2>err &&
- test_i18ngrep ! "in the future you will have to choose" err
-'
-
-test_expect_success 'pull.rebase not set and --ff-only given' '
- git reset --hard c2 &&
- test_must_fail git pull --ff-only . c1 2>err &&
- test_i18ngrep ! "in the future you will have to choose" err
-'
-
test_expect_success 'merge c1 with c2' '
git reset --hard c1 &&
test -f c0.c &&
The user has been warned that this change was coming and should have already configured his/her preference. It's time to flip the switch and make ff-only the default. There's no need for the annoying warning anymore. TODO: Do we want to keep the "pull.mode=ff-only" tests and essentially run them twice? Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> --- Documentation/git-pull.txt | 4 +- builtin/pull.c | 19 +--------- t/t5520-pull.sh | 28 +++++--------- t/t7601-merge-pull-config.sh | 72 ------------------------------------ 4 files changed, 13 insertions(+), 110 deletions(-)