From cd94c6f91ee92ffb0592696170fa84f426b839ab Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 22 Jun 2015 17:27:18 +0200 Subject: fsck: git receive-pack: support excluding objects from fsck'ing The optional new config option `receive.fsck.skipList` specifies the path to a file listing the names, i.e. SHA-1s, one per line, of objects that are to be ignored by `git receive-pack` when `receive.fsckObjects = true`. This is extremely handy in case of legacy repositories where it would cause more pain to change incorrect objects than to live with them (e.g. a duplicate 'author' line in an early commit object). The intended use case is for server administrators to inspect objects that are reported by `git push` as being too problematic to enter the repository, and to add the objects' SHA-1 to a (preferably sorted) file when the objects are legitimate, i.e. when it is determined that those problematic objects should be allowed to enter the server. Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- builtin/receive-pack.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'builtin/receive-pack.c') diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 3afe8f80c1..4ced2eba3c 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -117,6 +117,17 @@ static int receive_pack_config(const char *var, const char *value, void *cb) return 0; } + if (strcmp(var, "receive.fsck.skiplist") == 0) { + const char *path; + + if (git_config_pathname(&path, var, value)) + return 1; + strbuf_addf(&fsck_msg_types, "%cskiplist=%s", + fsck_msg_types.len ? ',' : '=', path); + free((char *)path); + return 0; + } + if (skip_prefix(var, "receive.fsck.", &var)) { if (is_valid_msg_type(var, value)) strbuf_addf(&fsck_msg_types, "%c%s=%s", -- cgit v1.2.1