1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-26 05:56:11 +02:00

pull: make --rebase and --no-rebase override pull.ff=only

Fix the last few precedence tests failing in t7601 by now implementing
the logic to have --[no-]rebase override a pull.ff=only config setting.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Elijah Newren 2021-07-22 05:04:47 +00:00 committed by Junio C Hamano
parent e4dc25ed49
commit adc27d6a93
2 changed files with 17 additions and 3 deletions

View File

@ -966,8 +966,22 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
parse_repo_refspecs(argc, argv, &repo, &refspecs);
if (!opt_ff)
if (!opt_ff) {
opt_ff = xstrdup_or_null(config_get_ff());
/*
* A subtle point: opt_ff was set on the line above via
* reading from config. opt_rebase, in contrast, is set
* before this point via command line options. The setting
* of opt_rebase via reading from config (using
* config_get_rebase()) does not happen until later. We
* are relying on the next if-condition happening before
* the config_get_rebase() call so that an explicit
* "--rebase" can override a config setting of
* pull.ff=only.
*/
if (opt_rebase >= 0 && opt_ff && !strcmp(opt_ff, "--ff-only"))
opt_ff = "--ff";
}
if (opt_rebase < 0)
opt_rebase = config_get_rebase(&rebase_unspecified);

View File

@ -260,11 +260,11 @@ test_expect_success '--ff-only takes precedence over pull.rebase=false' '
test_attempts_fast_forward -c pull.rebase=false pull --ff-only
'
test_expect_failure '--no-rebase takes precedence over pull.ff=only' '
test_expect_success '--no-rebase takes precedence over pull.ff=only' '
test_falls_back_to_full_merge -c pull.ff=only pull --no-rebase
'
test_expect_failure '--rebase takes precedence over pull.ff=only' '
test_expect_success '--rebase takes precedence over pull.ff=only' '
test_does_rebase -c pull.ff=only pull --rebase
'