It is rumored that some scripts rely on being able to regularly create two project merges. Instead of forcing them to pass the option --allow-unrelated-histories when they call "git merge", allow them to set and export an environment at the beginning and forget about it. This will be less damaging than adding a configuration variable to disable the safety, as contaminating the configuration file of users of such a script will allow any invocation of "git merge", not limited to such a script, to go without the safety. Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- Documentation/git.txt | 3 +++ builtin/merge.c | 3 +++ builtin/pull.c | 7 ++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Documentation/git.txt b/Documentation/git.txt index 754dc80..5c9380d 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -1138,6 +1138,9 @@ of clones and fetches. - any external helpers are named by their protocol (e.g., use `hg` to allow the `git-remote-hg` helper) +'GIT_MERGE_ALLOW_UNRELATED_HISTORIES':: + Allow "git merge" to merge unrelated histories by default. + Discussion[[Discussion]] ------------------------ diff --git a/builtin/merge.c b/builtin/merge.c index e3db41b..4e8b1a1 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1191,6 +1191,9 @@ int cmd_merge(int argc, const char **argv, const char *prefix) head_commit = lookup_commit_or_die(head_sha1, "HEAD"); git_config(git_merge_config, NULL); + if (getenv("GIT_MERGE_ALLOW_UNRELATED_HISTORIES")) + allow_unrelated_histories = + git_env_bool("GIT_MERGE_ALLOW_UNRELATED_HISTORIES", 0); if (branch_mergeoptions) parse_branch_merge_options(branch_mergeoptions); diff --git a/builtin/pull.c b/builtin/pull.c index 797932d..4e886a5 100644 --- a/builtin/pull.c +++ b/builtin/pull.c @@ -86,7 +86,7 @@ static char *opt_verify_signatures; static struct argv_array opt_strategies = ARGV_ARRAY_INIT; static struct argv_array opt_strategy_opts = ARGV_ARRAY_INIT; static char *opt_gpg_sign; -static int opt_allow_unrelated_histories; +static int opt_allow_unrelated_histories = -1; /* unspecified */ /* Options passed to git-fetch */ static char *opt_all; @@ -159,6 +159,9 @@ static struct option pull_options[] = { OPT_SET_INT(0, "allow-unrelated-histories", &opt_allow_unrelated_histories, N_("allow merging unrelated histories"), 1), + OPT_SET_INT(0, "no-allow-unrelated-histories", + &opt_allow_unrelated_histories, + N_("do not allow merging unrelated histories"), 0), /* Options passed to git-fetch */ OPT_GROUP(N_("Options related to fetching")), @@ -609,6 +612,8 @@ static int run_merge(void) argv_array_push(&args, opt_gpg_sign); if (opt_allow_unrelated_histories > 0) argv_array_push(&args, "--allow-unrelated-histories"); + else if (!opt_allow_unrelated_histories) + argv_array_push(&args, "--no-allow-unrelated-histories"); argv_array_push(&args, "FETCH_HEAD"); ret = run_command_v_opt(args.argv, RUN_GIT_CMD); -- 2.8.1-422-g6d9b748 -- 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