diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index 925f7b5..f464ca0 100644
--- a/builtin/index-pack.c
+++ b/builtin/index-pack.c
@@ -1565,6 +1565,10 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
} else if (!strcmp(arg, "--strict")) {
strict = 1;
do_fsck_object = 1;
+ } else if (starts_with(arg, "--strict=")) {
+ strict = 1;
+ do_fsck_object = 1;
+ fsck_set_severity(&fsck_options, arg + 9);
} else if (!strcmp(arg, "--check-self-contained-and-connected")) {
strict = 1;
check_self_contained_and_connected = 1;diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index e0ce78e..da2e019 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -36,6 +36,7 @@ static enum deny_action deny_current_branch = DENY_UNCONFIGURED;
static enum deny_action deny_delete_current = DENY_UNCONFIGURED;
static int receive_fsck_objects = -1;
static int transfer_fsck_objects = -1;
+static struct strbuf fsck_severity = STRBUF_INIT;
static int receive_unpack_limit = -1;
static int transfer_unpack_limit = -1;
static int advertise_atomic_push = 1;
@@ -115,6 +116,13 @@ static int receive_pack_config(const char *var, const char *value, void *cb)
return 0;
}
+ if (starts_with(var, "receive.fsck.")) {
+ if (fsck_severity.len)
+ strbuf_addch(&fsck_severity, ',');
+ strbuf_addf(&fsck_severity, "%s=%s", var + 13, value);
+ return 0;
+ }
+
if (strcmp(var, "receive.fsckobjects") == 0) {
receive_fsck_objects = git_config_bool(var, value);
return 0;@@ -1470,8 +1478,13 @@ static const char *unpack(int err_fd, struct shallow_info *si)
argv_array_pushl(&child.args, "unpack-objects", hdr_arg, NULL);
if (quiet)
argv_array_push(&child.args, "-q");
- if (fsck_objects)
- argv_array_push(&child.args, "--strict");
+ if (fsck_objects) {
+ if (fsck_severity.len)
+ argv_array_pushf(&child.args, "--strict=%s",
+ fsck_severity.buf);
+ else
+ argv_array_push(&child.args, "--strict");
+ }
child.no_stdout = 1;
child.err = err_fd;
child.git_cmd = 1;@@ -1488,8 +1501,13 @@ static const char *unpack(int err_fd, struct shallow_info *si)
argv_array_pushl(&child.args, "index-pack",
"--stdin", hdr_arg, keep_arg, NULL);
- if (fsck_objects)
- argv_array_push(&child.args, "--strict");
+ if (fsck_objects) {
+ if (fsck_severity.len)
+ argv_array_pushf(&child.args, "--strict=%s",
+ fsck_severity.buf);
+ else
+ argv_array_push(&child.args, "--strict");
+ }
if (fix_thin)
argv_array_push(&child.args, "--fix-thin");
child.out = -1;diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c
index 6d17040..82f2d62 100644
--- a/builtin/unpack-objects.c
+++ b/builtin/unpack-objects.c
@@ -530,6 +530,11 @@ int cmd_unpack_objects(int argc, const char **argv, const char *prefix)
strict = 1;
continue;
}
+ if (starts_with(arg, "--strict=")) {
+ strict = 1;
+ fsck_set_severity(&fsck_options, arg + 9);
+ continue;
+ }
if (starts_with(arg, "--pack_header=")) {
struct pack_header *hdr;
char *c;--
2.0.0.rc3.9669.g840d1f9