Commit 45ed4afa authored by Junio C Hamano's avatar Junio C Hamano

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
parents db1a8484 125a05fd
......@@ -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);
......
......@@ -58,7 +58,13 @@ test_expect_success 'creating too deep nesting' \
git clone -l -s D E &&
git clone -l -s E F &&
git clone -l -s F G &&
test_must_fail git clone --bare -l -s G H'
git clone --bare -l -s G H'
test_expect_success 'invalidity of deepest repository' \
'cd H && {
test_valid_repo
test $? -ne 0
}'
cd "$base_dir"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment