diff options
author | Junio C Hamano <gitster@pobox.com> | 2018-03-21 19:30:11 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-03-21 19:30:11 +0100 |
commit | f62452ecfc99d914fe50f4e098c04e15cc1c7bae (patch) | |
tree | 0a443fe078ce386b924aee9cc5304b857678a88f /builtin | |
parent | Merge branch 'bp/refresh-cache-ent-rehash-fix' (diff) | |
parent | fetch-pack: do not check links for partial fetch (diff) | |
download | git-f62452ecfc99d914fe50f4e098c04e15cc1c7bae.tar.xz git-f62452ecfc99d914fe50f4e098c04e15cc1c7bae.zip |
Merge branch 'jt/transfer-fsck-with-promissor'
The transfer.fsckobjects configuration tells "git fetch" to
validate the data and connected-ness of objects in the received
pack; the code to perform this check has been taught about the
narrow clone's convention that missing objects that are reachable
from objects in a pack that came from a promissor remote is OK.
* jt/transfer-fsck-with-promissor:
fetch-pack: do not check links for partial fetch
index-pack: support checking objects but not links
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/index-pack.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/builtin/index-pack.c b/builtin/index-pack.c index 9791d42889..bda84a92ef 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -828,7 +828,7 @@ static void sha1_object(const void *data, struct object_entry *obj_entry, free(has_data); } - if (strict) { + if (strict || do_fsck_object) { read_lock(); if (type == OBJ_BLOB) { struct blob *blob = lookup_blob(oid); @@ -854,7 +854,7 @@ static void sha1_object(const void *data, struct object_entry *obj_entry, if (do_fsck_object && fsck_object(obj, buf, size, &fsck_options)) die(_("Error in object")); - if (fsck_walk(obj, NULL, &fsck_options)) + if (strict && fsck_walk(obj, NULL, &fsck_options)) die(_("Not all child objects of %s are reachable"), oid_to_hex(&obj->oid)); if (obj->type == OBJ_TREE) { @@ -1689,6 +1689,8 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix) } else if (!strcmp(arg, "--check-self-contained-and-connected")) { strict = 1; check_self_contained_and_connected = 1; + } else if (!strcmp(arg, "--fsck-objects")) { + do_fsck_object = 1; } else if (!strcmp(arg, "--verify")) { verify = 1; } else if (!strcmp(arg, "--verify-stat")) { |