Junio C Hamano wrote: > --- a/Documentation/merge-config.txt > +++ b/Documentation/merge-config.txt > @@ -16,6 +16,16 @@ merge.defaultToUpstream:: > to their corresponding remote tracking branches, and the tips of > these tracking branches are merged. > > +merge.ff:: [...] > + line). When set to `only`, only such fast-forward merges are > + allowed (equivalent to giving the `--ff-only` option from the > + command line). A habitual "git pull" user that uses git in a read-only fashion to get the latest development snapshot of a project's code would probably find this handy. > --- a/builtin/merge.c > +++ b/builtin/merge.c > @@ -550,6 +550,15 @@ static int git_merge_config(const char *k, const char *v, void *cb) > if (is_bool && shortlog_len) > shortlog_len = DEFAULT_MERGE_LOG_LEN; > return 0; > + } else if (!strcmp(k, "merge.ff")) { > + int boolval = git_config_maybe_bool(k, v); > + if (0 <= boolval) { > + allow_fast_forward = boolval; > + } else if (v && !strcmp(v, "only")) { > + allow_fast_forward = 1; > + fast_forward_only = 1; > + } /* do not barf on values from future versions of git */ Perhaps deserves a test, like so (meant for squashing)? -- >8 -- Subject: tests: check git does not barf on merge.ff values for future versions of git Maybe some day in the future we will want to support a syntax like [merge] ff = branch1 ff = branch2 ff = branch3 in addition to the currently permitted "true", "false", and "only" values. So make sure we continue to treat such configurations as though an unknown variable had been defined rather than erroring out, until it is time to implement such a thing, so configuration files using such a facility can be shared between present and future git. While at it, add a few missing && and start the "combining --squash and --no-ff" test with a known state so we can be sure it does not succeed or fail for the wrong reason. Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- t/t7600-merge.sh | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh index 89e0b77..1e20f2e 100755 --- a/t/t7600-merge.sh +++ b/t/t7600-merge.sh @@ -35,6 +35,7 @@ printf '%s\n' 1 2 3 4 5 6 7 8 '9 X' >file.9 printf '%s\n' '1 X' 2 3 4 5 6 7 8 9 >result.1 printf '%s\n' '1 X' 2 3 4 '5 X' 6 7 8 9 >result.1-5 printf '%s\n' '1 X' 2 3 4 '5 X' 6 7 8 '9 X' >result.1-5-9 +>empty create_merge_msgs () { echo "Merge commit 'c2'" >msg.1-5 && @@ -475,8 +476,8 @@ test_debug 'git log --graph --decorate --oneline --all' test_expect_success 'combine branch.master.mergeoptions with merge.ff' ' git reset --hard c0 && - git config branch.master.mergeoptions --ff - git config merge.ff false + git config branch.master.mergeoptions --ff && + git config merge.ff false && test_tick && git merge c1 && git config --remove-section "branch.master" && @@ -485,7 +486,18 @@ test_expect_success 'combine branch.master.mergeoptions with merge.ff' ' verify_parents "$c0" ' +test_expect_success 'tolerate unknown values for merge.ff' ' + git reset --hard c0 && + git config merge.ff something-new && + test_tick && + git merge c1 2>message && + git config --remove-section "merge" && + verify_head "$c1" && + test_cmp empty message +' + test_expect_success 'combining --squash and --no-ff is refused' ' + git reset --hard c0 && test_must_fail git merge --squash --no-ff c1 && test_must_fail git merge --no-ff --squash c1 ' -- 1.7.5.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html