fsck: test and document unknown fsck.<msg-id> values

When fsck.<msg-id> is set to an unknown value it'll cause "fsck" to
die, but the same is not true of the "fetch" and "receive"
variants. Document this and test for it.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Ævar Arnfjörð Bjarmason 2018-07-27 14:37:20 +00:00 committed by Junio C Hamano
parent 65a836fa6b
commit 8a6d0525b7
2 changed files with 18 additions and 0 deletions

View File

@ -1637,6 +1637,10 @@ In general, it is better to enumerate existing objects with problems
with `fsck.skipList`, instead of listing the kind of breakages these with `fsck.skipList`, instead of listing the kind of breakages these
problematic objects share to be ignored, as doing the latter will problematic objects share to be ignored, as doing the latter will
allow new instances of the same breakages go unnoticed. allow new instances of the same breakages go unnoticed.
+
Setting an unknown `fsck.<msg-id>` value will cause fsck to die, but
doing the same for `receive.fsck.<msg-id>` and `fetch.fsck.<msg-id>`
will only cause git to warn.
fsck.skipList:: fsck.skipList::
The path to a sorted list of object names (i.e. one SHA-1 per The path to a sorted list of object names (i.e. one SHA-1 per

View File

@ -198,6 +198,10 @@ test_expect_success 'fetch with fetch.fsck.skipList' '
git --git-dir=dst/.git fetch "file://$(pwd)" $refspec git --git-dir=dst/.git fetch "file://$(pwd)" $refspec
' '
test_expect_success 'fsck.<unknownmsg-id> dies' '
test_must_fail git -c fsck.whatEver=ignore fsck 2>err &&
test_i18ngrep "Unhandled message id: whatever" err
'
test_expect_success 'push with receive.fsck.missingEmail=warn' ' test_expect_success 'push with receive.fsck.missingEmail=warn' '
commit="$(git hash-object -t commit -w --stdin <bogus-commit)" && commit="$(git hash-object -t commit -w --stdin <bogus-commit)" &&
@ -211,10 +215,15 @@ test_expect_success 'push with receive.fsck.missingEmail=warn' '
git --git-dir=dst/.git config fsck.missingEmail warn && git --git-dir=dst/.git config fsck.missingEmail warn &&
test_must_fail git push --porcelain dst bogus && test_must_fail git push --porcelain dst bogus &&
# receive.fsck.<unknownmsg-id> warns
git --git-dir=dst/.git config \
receive.fsck.whatEver error &&
git --git-dir=dst/.git config \ git --git-dir=dst/.git config \
receive.fsck.missingEmail warn && receive.fsck.missingEmail warn &&
git push --porcelain dst bogus >act 2>&1 && git push --porcelain dst bogus >act 2>&1 &&
grep "missingEmail" act && grep "missingEmail" act &&
test_i18ngrep "Skipping unknown msg id.*whatever" act &&
git --git-dir=dst/.git branch -D bogus && git --git-dir=dst/.git branch -D bogus &&
git --git-dir=dst/.git config --add \ git --git-dir=dst/.git config --add \
receive.fsck.missingEmail ignore && receive.fsck.missingEmail ignore &&
@ -235,10 +244,15 @@ test_expect_success 'fetch with fetch.fsck.missingEmail=warn' '
git --git-dir=dst/.git config fsck.missingEmail warn && git --git-dir=dst/.git config fsck.missingEmail warn &&
test_must_fail git --git-dir=dst/.git fetch "file://$(pwd)" $refspec && test_must_fail git --git-dir=dst/.git fetch "file://$(pwd)" $refspec &&
# receive.fsck.<unknownmsg-id> warns
git --git-dir=dst/.git config \
fetch.fsck.whatEver error &&
git --git-dir=dst/.git config \ git --git-dir=dst/.git config \
fetch.fsck.missingEmail warn && fetch.fsck.missingEmail warn &&
git --git-dir=dst/.git fetch "file://$(pwd)" $refspec >act 2>&1 && git --git-dir=dst/.git fetch "file://$(pwd)" $refspec >act 2>&1 &&
grep "missingEmail" act && grep "missingEmail" act &&
test_i18ngrep "Skipping unknown msg id.*whatever" act &&
rm -rf dst && rm -rf dst &&
git init dst && git init dst &&
git --git-dir=dst/.git config fetch.fsckobjects true && git --git-dir=dst/.git config fetch.fsckobjects true &&