summaryrefslogtreecommitdiff
path: root/builtin/clone.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2013-07-18 19:48:28 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-07-18 19:48:29 (GMT)
commit45ed4afabee57a2583f4b88828f598573f7cd239 (patch)
tree58e0e700bdc32f5d9840a78a07217771c95f5726 /builtin/clone.c
parentdb1a848421fe05482e36fcba76f019299ae93b25 (diff)
parent125a05fd0b45416558923b753f6418c24208d443 (diff)
downloadgit-45ed4afabee57a2583f4b88828f598573f7cd239.zip
git-45ed4afabee57a2583f4b88828f598573f7cd239.tar.gz
git-45ed4afabee57a2583f4b88828f598573f7cd239.tar.bz2
Merge branch 'jk/maint-clone-shared-no-connectivity-validation'
"git clone -s/-l" is a filesystem level copy and does not offer any protection against source repository being corrupt. While the connectivity validation checks commits and trees being readable, it made the otherwise instantaneous local modes of clone much more expensive, without protecting blob data from bitflips. * jk/maint-clone-shared-no-connectivity-validation: clone: drop connectivity check for local clones
Diffstat (limited to 'builtin/clone.c')
-rw-r--r--builtin/clone.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/builtin/clone.c b/builtin/clone.c
index 17f57cd..430307b 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -545,17 +545,20 @@ static void update_remote_refs(const struct ref *refs,
const struct ref *remote_head_points_at,
const char *branch_top,
const char *msg,
- struct transport *transport)
+ struct transport *transport,
+ int check_connectivity)
{
const struct ref *rm = mapped_refs;
- if (0 <= option_verbosity)
- printf(_("Checking connectivity... "));
- if (check_everything_connected_with_transport(iterate_ref_map,
- 0, &rm, transport))
- die(_("remote did not send all necessary objects"));
- if (0 <= option_verbosity)
- printf(_("done\n"));
+ if (check_connectivity) {
+ if (0 <= option_verbosity)
+ printf(_("Checking connectivity... "));
+ if (check_everything_connected_with_transport(iterate_ref_map,
+ 0, &rm, transport))
+ die(_("remote did not send all necessary objects"));
+ if (0 <= option_verbosity)
+ printf(_("done\n"));
+ }
if (refs) {
write_remote_refs(mapped_refs);
@@ -963,7 +966,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
transport_fetch_refs(transport, mapped_refs);
update_remote_refs(refs, mapped_refs, remote_head_points_at,
- branch_top.buf, reflog_msg.buf, transport);
+ branch_top.buf, reflog_msg.buf, transport, !is_local);
update_head(our_head_points_at, remote_head, reflog_msg.buf);