]> git.ipfire.org Git - thirdparty/git.git/commitdiff
pull: make pull.ff=true override merge.ff
authorPaul Tan <pyokagan@gmail.com>
Mon, 18 May 2015 13:45:41 +0000 (21:45 +0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 18 May 2015 18:22:27 +0000 (11:22 -0700)
Since b814da8 (pull: add pull.ff configuration, 2014-01-15), running
git-pull with the configuration pull.ff=false or pull.ff=only is
equivalent to passing --no-ff and --ff-only to git-merge. However, if
pull.ff=true, no switch is passed to git-merge. This leads to the
confusing behavior where pull.ff=false or pull.ff=only is able to
override merge.ff, while pull.ff=true is unable to.

Fix this by adding the --ff switch if pull.ff=true, and add a test to
catch future regressions.

Furthermore, clarify in the documentation that pull.ff overrides
merge.ff.

Signed-off-by: Paul Tan <pyokagan@gmail.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config.txt
git-pull.sh
t/t7601-merge-pull-config.sh

index 2e5ceaf71974b1e5404de79103648da1829eaf42..f45bef13ae57e6f67e8a6559e81d75c9610b3734 100644 (file)
@@ -2033,7 +2033,7 @@ pull.ff::
        a case (equivalent to giving the `--no-ff` option from the command
        line). When set to `only`, only such fast-forward merges are
        allowed (equivalent to giving the `--ff-only` option from the
-       command line).
+       command line). This setting overrides `merge.ff` when pulling.
 
 pull.rebase::
        When true, rebase branches on top of the fetched branch, instead
index 4d4fc77b05648c7d2d76ae932b7d68cdf411d364..2aea4fa38a7e2dcb945b419aa44ca89a5fe5b874 100755 (executable)
@@ -56,6 +56,9 @@ fi
 # Setup default fast-forward options via `pull.ff`
 pull_ff=$(git config pull.ff)
 case "$pull_ff" in
+true)
+       no_ff=--ff
+       ;;
 false)
        no_ff=--no-ff
        ;;
index f768c900abd1cddc6d69a1bdeae897374e7d0dad..c6c44ec570dac66ca9a800ac687280cd3597e886 100755 (executable)
@@ -45,6 +45,14 @@ test_expect_success 'fast-forward pull succeeds with "true" in pull.ff' '
        test "$(git rev-parse HEAD)" = "$(git rev-parse c1)"
 '
 
+test_expect_success 'pull.ff=true overrides merge.ff=false' '
+       git reset --hard c0 &&
+       test_config merge.ff false &&
+       test_config pull.ff true &&
+       git pull . c1 &&
+       test "$(git rev-parse HEAD)" = "$(git rev-parse c1)"
+'
+
 test_expect_success 'fast-forward pull creates merge with "false" in pull.ff' '
        git reset --hard c0 &&
        test_config pull.ff false &&