At the moment, the git-fsck's integrity checks are targeted toward the end user, i.e. the error messages are really just messages, intended for human consumption. Under certain circumstances, some of those errors should be allowed to be turned into mere warnings, though, because the cost of fixing the issues might well be larger than the cost of carrying those flawed objects. For example, when an already-public repository contains a commit object with two authors for years, it does not make sense to force the maintainer to rewrite the history, affecting all contributors negatively by forcing them to update. This branch introduces an internal fsck API to be able to turn some of the errors into warnings, and to make it easier to call the fsck machinery from elsewhere in general. I am proud to report that this work has been sponsored by GitHub. Johannes Schindelin (18): Introduce fsck options Introduce identifiers for fsck messages Provide a function to parse fsck message IDs Offer a function to demote fsck errors to warnings Allow demoting errors to warnings via receive.fsck.<key> = warn fsck: report the ID of the error/warning Make fsck_ident() warn-friendly Make fsck_commit() warn-friendly fsck: handle multiple authors in commits specially Make fsck_tag() warn-friendly Add a simple test for receive.fsck.* Disallow demoting grave fsck errors to warnings Optionally ignore specific fsck issues completely fsck: allow upgrading fsck warnings to errors Document the new receive.fsck.* options. fsck: support demoting errors to warnings Introduce `git fsck --quick` git receive-pack: support excluding objects from fsck'ing Documentation/config.txt | 27 +++ Documentation/git-fsck.txt | 7 +- builtin/fsck.c | 66 ++++-- builtin/index-pack.c | 13 +- builtin/receive-pack.c | 36 ++- builtin/unpack-objects.c | 16 +- fsck.c | 512 +++++++++++++++++++++++++++++++--------- fsck.h | 28 ++- t/t1450-fsck.sh | 33 +++ t/t5302-pack-index.sh | 2 +- t/t5504-fetch-receive-strict.sh | 46 ++++ 11 files changed, 624 insertions(+), 162 deletions(-) -- 2.0.0.rc3.9669.g840d1f9 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html