threads / patch / 22746

patchmerge: --no-ff configuration setting

Subject: [PATCH] merge: --no-ff configuration setting

## tl;dr

3 messages between Feb 22, 2010 and Feb 23, 2010. Diffs are folded; open one to read it.

replies: 2people: 3as markdown or json

Bryan Alves· Feb 22, 2010, 02:59 UTC · lore
Add a new configuration option, merge.allowfastforward

When set to false, causes --no-ff to be the default behavior for merges. When set to true, or not present, the default behavior is unchanged, and acts like --ff is set.

Signed-off-by: Bryan Alves <bryanalves@gmail.com>
---
 Documentation/merge-options.txt |    4 +++-
 builtin-merge.c                 |    3 +++
 2 files changed, 6 insertions(+), 1 deletions(-)
Show changes to 2 files +6 −1

Documentation/merge-options.txt, builtin-merge.c

diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt
index 3b83dba..6638af7 100644
--- a/Documentation/merge-options.txt
+++ b/Documentation/merge-options.txt
@@ -14,7 +14,9 @@ inspect and further tweak the merge result before committing.
 	the default behavior of git-merge.
 +
 With --no-ff Generate a merge commit even if the merge
-resolved as a fast-forward.
+resolved as a fast-forward.  --no-ff can be made the
+default behavior with the configuration option
+merge.allowfastforward
 
 --log::
 --no-log::
diff --git a/builtin-merge.c b/builtin-merge.c
index 3aaec7b..a96aaac 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c
@@ -495,6 +495,9 @@ static int git_merge_config(const char *k, const char *v, void *cb)
 		free(buf);
 	}
 
+	if (!strcmp(k, "merge.allowfastforward"))
+		allow_fast_forward = !git_config_bool(k, v);
+
 	if (!strcmp(k, "merge.diffstat") || !strcmp(k, "merge.stat"))
 		show_diffstat = git_config_bool(k, v);
 	else if (!strcmp(k, "pull.twohead"))
-- 
1.6.6.1
Stephen Boyd· Feb 23, 2010, 05:55 UTC · re: Bryan Alves · lore

Re: [PATCH] merge: --no-ff configuration setting

On 02/21/2010 06:59 PM, Bryan Alves wrote:
Show 5 quoted lines
> Add a new configuration option, merge.allowfastforward
>
> When set to false, causes --no-ff to be the default behavior
> for merges. When set to true, or not present, the default
> behavior is unchanged, and acts like --ff is set.

The subject says --no-ff configuration but the option is for --ff. Sounds confusing. In other words, shouldn't it be merge.disallowfastforward or merge.nofastforward? Or maybe the subject should be "merge: --ff configuration setting"

Also could you just use branch.<name>.mergeoptions and not introduce yet another config option? Or maybe there's some reasoning why you always want to have merge commits in your workflow?

Finally if this goes in please add a description to Documentation/config.txt
Junio C Hamano· Feb 23, 2010, 06:32 UTC · re: Bryan Alves · lore

Re: [PATCH] merge: --no-ff configuration setting

Bryan Alves <bryanalves@gmail.com> writes:
>  Documentation/merge-options.txt |    4 +++-
>  builtin-merge.c                 |    3 +++

This needs tests to make sure that existing programs that internally use "git merge" (e.g. "rebase -m", "rebase -i") do not break when the end user has this configuration set in the repository, in addition to that "merge" works as expected with and without this configuration variable, with combinations with the use of relevant command line options.

← back to recent threads