To make it possible to have the external odb mechanism only kick in
after the initial part of a clone, we should disable it during the
initial part of the clone.
Let's do that by saving and then restoring the value of the
'use_external_odb' global variable.
Signed-off-by: Christian Couder <redacted>
---
builtin/clone.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/builtin/clone.c b/builtin/clone.c
index 76e561534d..dc57eabd40 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -934,6 +934,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
struct refspec *initial_refspecs;
int is_initial;
+ int saved_use_external_odb;
packet_trace_identity("clone");
argc = parse_options(argc, argv, prefix, builtin_clone_options,@@ -1079,6 +1080,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
git_config(git_default_config, NULL);
+ /* Temporarily disable external ODB before initial clone */
+ saved_use_external_odb = use_external_odb;
+ use_external_odb = 0;
+
if (option_bare) {
if (option_mirror)
src_ref_prefix = "refs/";@@ -1162,6 +1167,8 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
fetch_initial_refs(transport, refs, initial_refspecs,
branch_top.buf, reflog_msg.buf, is_local);
+ use_external_odb = saved_use_external_odb;
+
mapped_refs = wanted_peer_refs(refs, refspec);
/*
* transport_get_remote_refs() may return refs with null sha-1
@@ -1203,6 +1210,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
option_branch, option_origin);
warning(_("You appear to have cloned an empty repository."));
+
+ use_external_odb = saved_use_external_odb;
+
mapped_refs = NULL;
our_head_points_at = NULL;
remote_head_points_at = NULL;--
2.14.0.rc1.52.gf02fb0ddac.dirty