File tree Expand file tree Collapse file tree 3 files changed +46
-0
lines changed Expand file tree Collapse file tree 3 files changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -1877,6 +1877,16 @@ pretty.<name>::
1877
1877
Note that an alias with the same name as a built-in format
1878
1878
will be silently ignored.
1879
1879
1880
+ pull.ff::
1881
+ By default, Git does not create an extra merge commit when merging
1882
+ a commit that is a descendant of the current commit. Instead, the
1883
+ tip of the current branch is fast-forwarded. When set to `false`,
1884
+ this variable tells Git to create an extra merge commit in such
1885
+ a case (equivalent to giving the `--no-ff` option from the command
1886
+ line). When set to `only`, only such fast-forward merges are
1887
+ allowed (equivalent to giving the `--ff-only` option from the
1888
+ command line).
1889
+
1880
1890
pull.rebase::
1881
1891
When true, rebase branches on top of the fetched branch, instead
1882
1892
of merging the default branch from the default remote when "git
Original file line number Diff line number Diff line change @@ -52,6 +52,21 @@ if test -z "$rebase"
52
52
then
53
53
rebase=$( bool_or_string_config pull.rebase)
54
54
fi
55
+
56
+ # Setup default fast-forward options via `pull.ff`
57
+ pull_ff=$( git config pull.ff)
58
+ case " $pull_ff " in
59
+ false)
60
+ no_ff=--no-ff
61
+ break
62
+ ;;
63
+ only)
64
+ ff_only=--ff-only
65
+ break
66
+ ;;
67
+ esac
68
+
69
+
55
70
dry_run=
56
71
while :
57
72
do
Original file line number Diff line number Diff line change @@ -38,6 +38,27 @@ test_expect_success 'merge c1 with c2' '
38
38
test -f c2.c
39
39
'
40
40
41
+ test_expect_success ' fast-forward pull succeeds with "true" in pull.ff' '
42
+ git reset --hard c0 &&
43
+ test_config pull.ff true &&
44
+ git pull . c1 &&
45
+ test "$(git rev-parse HEAD)" = "$(git rev-parse c1)"
46
+ '
47
+
48
+ test_expect_success ' fast-forward pull creates merge with "false" in pull.ff' '
49
+ git reset --hard c0 &&
50
+ test_config pull.ff false &&
51
+ git pull . c1 &&
52
+ test "$(git rev-parse HEAD^1)" = "$(git rev-parse c0)" &&
53
+ test "$(git rev-parse HEAD^2)" = "$(git rev-parse c1)"
54
+ '
55
+
56
+ test_expect_success ' pull prevents non-fast-forward with "only" in pull.ff' '
57
+ git reset --hard c1 &&
58
+ test_config pull.ff only &&
59
+ test_must_fail git pull . c3
60
+ '
61
+
41
62
test_expect_success ' merge c1 with c2 (ours in pull.twohead)' '
42
63
git reset --hard c1 &&
43
64
git config pull.twohead ours &&
You can’t perform that action at this time.
0 commit comments