Skip to content

Commit

Permalink
Merge branch 'jk/maint-clone-shared-no-connectivity-validation'
Browse files Browse the repository at this point in the history
"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
  • Loading branch information
Junio C Hamano committed Jul 18, 2013
2 parents db1a848 + 125a05f commit 45ed4af
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 10 deletions.
21 changes: 12 additions & 9 deletions builtin/clone.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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);

Expand Down
8 changes: 7 additions & 1 deletion t/t5710-info-alternate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down

0 comments on commit 45ed4af

Please sign in to comment.