fsck: introduce fsck options
Just like the diff machinery, we are about to introduce more settings, therefore it makes sense to carry them around as a (pointer to a) struct containing all of them. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
5b1d901c01
commit
22410549fc
@ -75,6 +75,7 @@ static int nr_threads;
|
||||
static int from_stdin;
|
||||
static int strict;
|
||||
static int do_fsck_object;
|
||||
static struct fsck_options fsck_options = FSCK_OPTIONS_STRICT;
|
||||
static int verbose;
|
||||
static int show_stat;
|
||||
static int check_self_contained_and_connected;
|
||||
@ -192,7 +193,7 @@ static void cleanup_thread(void)
|
||||
#endif
|
||||
|
||||
|
||||
static int mark_link(struct object *obj, int type, void *data)
|
||||
static int mark_link(struct object *obj, int type, void *data, struct fsck_options *options)
|
||||
{
|
||||
if (!obj)
|
||||
return -1;
|
||||
@ -838,10 +839,9 @@ static void sha1_object(const void *data, struct object_entry *obj_entry,
|
||||
if (!obj)
|
||||
die(_("invalid %s"), typename(type));
|
||||
if (do_fsck_object &&
|
||||
fsck_object(obj, buf, size, 1,
|
||||
fsck_error_function))
|
||||
fsck_object(obj, buf, size, &fsck_options))
|
||||
die(_("Error in object"));
|
||||
if (fsck_walk(obj, mark_link, NULL))
|
||||
if (fsck_walk(obj, NULL, &fsck_options))
|
||||
die(_("Not all child objects of %s are reachable"), sha1_to_hex(obj->sha1));
|
||||
|
||||
if (obj->type == OBJ_TREE) {
|
||||
@ -1615,6 +1615,7 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
|
||||
usage(index_pack_usage);
|
||||
|
||||
check_replace_refs = 0;
|
||||
fsck_options.walk = mark_link;
|
||||
|
||||
reset_pack_idx_option(&opts);
|
||||
git_config(git_index_pack_config, &opts);
|
||||
|
||||
Reference in New Issue
Block a user