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 <pclo...@gmail.com>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to