Skip to content

Commit

Permalink
fsck: optionally ignore specific fsck issues completely
Browse files Browse the repository at this point in the history
An fsck issue in a legacy repository might be so common that one would
like not to bother the user with mentioning it at all. With this change,
that is possible by setting the respective message type to "ignore".

This change "abuses" the missingEmail=warn test to verify that "ignore"
is also accepted and works correctly. And while at it, it makes sure
that multiple options work, too (they are passed to unpack-objects or
index-pack as a comma-separated list via the --strict=... command-line
option).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Johannes Schindelin authored and Junio C Hamano committed Jun 23, 2015
1 parent f50c440 commit efaba7c
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 1 deletion.
5 changes: 5 additions & 0 deletions fsck.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,8 @@ static int parse_msg_type(const char *str)
return FSCK_ERROR;
else if (!strcmp(str, "warn"))
return FSCK_WARN;
else if (!strcmp(str, "ignore"))
return FSCK_IGNORE;
else
die("Unknown fsck message type: '%s'", str);
}
Expand Down Expand Up @@ -222,6 +224,9 @@ static int report(struct fsck_options *options, struct object *object,
struct strbuf sb = STRBUF_INIT;
int msg_type = fsck_msg_type(id, options), result;

if (msg_type == FSCK_IGNORE)
return 0;

if (msg_type == FSCK_FATAL)
msg_type = FSCK_ERROR;

Expand Down
1 change: 1 addition & 0 deletions fsck.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#define FSCK_ERROR 1
#define FSCK_WARN 2
#define FSCK_IGNORE 3

struct fsck_options;

Expand Down
9 changes: 8 additions & 1 deletion t/t5504-fetch-receive-strict.sh
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,14 @@ test_expect_success 'push with receive.fsck.missingEmail=warn' '
git --git-dir=dst/.git config \
receive.fsck.missingEmail warn &&
git push --porcelain dst bogus >act 2>&1 &&
grep "missingEmail" act
grep "missingEmail" act &&
git --git-dir=dst/.git branch -D bogus &&
git --git-dir=dst/.git config --add \
receive.fsck.missingEmail ignore &&
git --git-dir=dst/.git config --add \
receive.fsck.badDate warn &&
git push --porcelain dst bogus >act 2>&1 &&
test_must_fail grep "missingEmail" act
'

test_expect_success \
Expand Down

0 comments on commit efaba7c

Please sign in to comment.