diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2015-06-22 17:27:18 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-06-23 14:27:37 -0700 |
commit | cd94c6f91ee92ffb0592696170fa84f426b839ab (patch) | |
tree | 1e437d580bb4b5087d248d69149350ebf14ed94b /builtin/receive-pack.c | |
parent | fsck: introduce `git fsck --connectivity-only` (diff) | |
download | tgif-cd94c6f91ee92ffb0592696170fa84f426b839ab.tar.xz |
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 <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/receive-pack.c')
-rw-r--r-- | builtin/receive-pack.c | 11 |
1 files changed, 11 insertions, 0 deletions
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", |