[PATCH 4/4] Use --not-so-strict on all pack transfer for connectivity check
From: Nguyễn Thái Ngọc Duy <hidden>
Date: 2016-06-15 22:56:35
Subsystem:
the rest · Maintainer:
Linus Torvalds
This replaces check_everything_connected() with --not-so-strict, which accomplishes the same thing and is generally cheaper. This also forces connectivity check on "git clone". Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- builtin/fetch.c | 6 ------ builtin/receive-pack.c | 22 ++++------------------ fetch-pack.c | 2 ++ t/t5504-fetch-receive-strict.sh | 2 +- 4 files changed, 7 insertions(+), 25 deletions(-)
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 4b6b1df..d9f970f 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c@@ -400,12 +400,6 @@ static int store_updated_refs(const char *raw_url, const char *remote_name, else url = xstrdup("foreign"); - rm = ref_map; - if (check_everything_connected(iterate_ref_map, 0, &rm)) { - rc = error(_("%s did not send all necessary objects\n"), url); - goto abort; - } - /* * The first pass writes objects to be merged and then the * second pass writes the rest, in order to allow using
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 62ba6e7..07abb14 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c@@ -663,19 +663,6 @@ static int command_singleton_iterator(void *cb_data, unsigned char sha1[20]) return 0; } -static void set_connectivity_errors(struct command *commands) -{ - struct command *cmd; - - for (cmd = commands; cmd; cmd = cmd->next) { - struct command *singleton = cmd; - if (!check_everything_connected(command_singleton_iterator, - 0, &singleton)) - continue; - cmd->error_string = "missing necessary objects"; - } -} - static int iterate_receive_command_list(void *cb_data, unsigned char sha1[20]) { struct command **cmd_list = cb_data;
@@ -718,11 +705,6 @@ static void execute_commands(struct command *commands, const char *unpacker_erro return; } - cmd = commands; - if (check_everything_connected(iterate_receive_command_list, - 0, &cmd)) - set_connectivity_errors(commands); - reject_updates_to_hidden(commands); if (run_receive_hook(commands, "pre-receive", 0)) {
@@ -843,6 +825,8 @@ static const char *unpack(int err_fd) unpacker[i++] = "-q"; if (fsck_objects) unpacker[i++] = "--strict"; + else + unpacker[i++] = "--not-so-strict"; unpacker[i++] = hdr_arg; unpacker[i++] = NULL; memset(&child, 0, sizeof(child));
@@ -868,6 +852,8 @@ static const char *unpack(int err_fd) keeper[i++] = "--stdin"; if (fsck_objects) keeper[i++] = "--strict"; + else + keeper[i++] = "--not-so-strict"; keeper[i++] = "--fix-thin"; keeper[i++] = hdr_arg; keeper[i++] = keep_arg;
diff --git a/fetch-pack.c b/fetch-pack.c
index 1f9c5ba..ae20ae5 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c@@ -754,6 +754,8 @@ static int get_pack(struct fetch_pack_args *args, ? transfer_fsck_objects : 0) *av++ = "--strict"; + else + *av++ = "--not-so-strict"; *av++ = NULL; cmd.in = demux.out;
diff --git a/t/t5504-fetch-receive-strict.sh b/t/t5504-fetch-receive-strict.sh
index 69ee13c..14d2935 100755
--- a/t/t5504-fetch-receive-strict.sh
+++ b/t/t5504-fetch-receive-strict.sh@@ -60,7 +60,7 @@ test_expect_success 'fetch with transfer.fsckobjects' ' cat >exp <<EOF To dst -! refs/heads/master:refs/heads/test [remote rejected] (missing necessary objects) +! refs/heads/master:refs/heads/test [remote rejected] (unpacker error) EOF test_expect_success 'push without strict' '
--
1.8.2.83.gc99314b