fsck: test and document unknown fsck.<msg-id> values
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Fri, 27 Jul 2018 14:37:20 +0000 (14:37 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 27 Jul 2018 21:40:20 +0000 (14:40 -0700)
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>
Documentation/config.txt
t/t5504-fetch-receive-strict.sh
index 57c463c6e265534ebc8bbba4f35489e4845e8407..4cead6119a962418572634db45382267bed16099 100644 (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
 problematic objects share to be ignored, as doing the latter will
 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::
        The path to a sorted list of object names (i.e. one SHA-1 per
index 7f06b537d3cbd3f8c52dc818ec22ec88dcf28e49..62f35698912d0655e44d53d50c7197b8200d2710 100755 (executable)
@@ -198,6 +198,10 @@ test_expect_success 'fetch with fetch.fsck.skipList' '
        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' '
        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 &&
        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 \
                receive.fsck.missingEmail warn &&
        git push --porcelain dst bogus >act 2>&1 &&
        grep "missingEmail" act &&
+       test_i18ngrep "Skipping unknown msg id.*whatever" act &&
        git --git-dir=dst/.git branch -D bogus &&
        git --git-dir=dst/.git config --add \
                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 &&
        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 \
                fetch.fsck.missingEmail warn &&
        git --git-dir=dst/.git fetch "file://$(pwd)" $refspec >act 2>&1 &&
        grep "missingEmail" act &&
+       test_i18ngrep "Skipping unknown msg id.*whatever" act &&
        rm -rf dst &&
        git init dst &&
        git --git-dir=dst/.git config fetch.fsckobjects true &&