summaryrefslogtreecommitdiff
path: root/builtin/index-pack.c
diff options
context:
space:
mode:
authorJonathan Tan <jonathantanmy@google.com>2018-03-14 18:42:40 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-03-15 17:16:24 (GMT)
commitffb2c0fe5c2dbfe2be0a4743ffed622295e1124c (patch)
treebb328c4a39dc079f0f7608f0e1226503ccc05268 /builtin/index-pack.c
parent7fb6aefd2aaffe66e614f7f7b83e5b7ab16d4806 (diff)
downloadgit-ffb2c0fe5c2dbfe2be0a4743ffed622295e1124c.zip
git-ffb2c0fe5c2dbfe2be0a4743ffed622295e1124c.tar.gz
git-ffb2c0fe5c2dbfe2be0a4743ffed622295e1124c.tar.bz2
index-pack: support checking objects but not links
The index-pack command currently supports the --check-self-contained-and-connected argument, for internal use only, that instructs it to only check for broken links and not broken objects. For partial clones, we need the inverse, so add a --fsck-objects argument that checks for broken objects and not broken links, also for internal use only. This will be used by fetch-pack in a subsequent patch. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/index-pack.c')
-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")) {