From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org
Subject: [PATCH 3/4] merge: GIT_MERGE_ALLOW_UNRELATED_HISTORIES environment
Date: Thu, 21 Apr 2016 12:24:59 -0700 [thread overview]
Message-ID: <20160421192500.23563-4-gitster@pobox.com> (raw)
In-Reply-To: <20160421192500.23563-1-gitster@pobox.com>
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@pobox.com>
---
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
next prev parent reply other threads:[~2016-04-21 19:33 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-21 19:24 [PATCH 0/4] Loosening "two project merge" safety Junio C Hamano
2016-04-21 19:24 ` [PATCH 1/4] t3033: avoid 'ambiguous refs' warning Junio C Hamano
2016-04-21 19:24 ` [PATCH 2/4] pull: pass --allow-unrelated-histories to "git merge" Junio C Hamano
2016-04-21 19:36 ` Stefan Beller
2016-04-21 21:32 ` Junio C Hamano
2016-04-21 19:24 ` Junio C Hamano [this message]
2016-04-21 19:25 ` [PATCH 4/4] merge: introduce merge.allowUnrelatedhistories configuration option Junio C Hamano
2016-04-21 22:29 ` [PATCH 0/4] Loosening "two project merge" safety Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160421192500.23563-4-gitster@pobox.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).