summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-03-21 18:30:11 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-03-21 18:30:11 (GMT)
commitf62452ecfc99d914fe50f4e098c04e15cc1c7bae (patch)
tree0a443fe078ce386b924aee9cc5304b857678a88f /builtin
parentfddf9a2d06719555fba8ce0cd09a695f012cca04 (diff)
parent98a2ea46c2dedf45b5a94335462547a5d78a68e2 (diff)
downloadgit-f62452ecfc99d914fe50f4e098c04e15cc1c7bae.zip
git-f62452ecfc99d914fe50f4e098c04e15cc1c7bae.tar.gz
git-f62452ecfc99d914fe50f4e098c04e15cc1c7bae.tar.bz2
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.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index 9791d42..bda84a9 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")) {