]> git.ipfire.org Git - thirdparty/git.git/commitdiff
index-pack: test and document --strict=<msg-id>=<severity>...
authorJohn Cai <johncai86@gmail.com>
Thu, 1 Feb 2024 01:38:01 +0000 (01:38 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 1 Feb 2024 19:09:53 +0000 (11:09 -0800)
5d477a334a (fsck (receive-pack): allow demoting errors to warnings,
2015-06-22) allowed a list of fsck msg to downgrade to be passed to
--strict. However this is a hidden argument that was not documented nor
tested. Though it is true that most users would not call this option
directly, (nor use index-pack for that matter) it is still useful to
document and test this feature.

Reviewed-by: Christian Couder <christian.couder@gmail.com>
Signed-off-by: John Cai <johncai86@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-index-pack.txt
builtin/index-pack.c
t/t5300-pack-object.sh

index 6486620c3d8f2a2d7a9bb623c362d02465b06be4..694bb9409bf9c066628379e804932a02bec907cf 100644 (file)
@@ -79,8 +79,13 @@ OPTIONS
        to force the version for the generated pack index, and to force
        64-bit index entries on objects located above the given offset.
 
---strict::
-       Die, if the pack contains broken objects or links.
+--strict[=<msg-id>=<severity>...]::
+       Die, if the pack contains broken objects or links. An optional
+       comma-separated list of `<msg-id>=<severity>` can be passed to change
+       the severity of some possible issues, e.g.,
+        `--strict="missingEmail=ignore,badTagName=error"`. See the entry for the
+       `fsck.<msg-id>` configuration options in linkgit:git-fsck[1] for more
+       information on the possible values of `<msg-id>` and `<severity>`.
 
 --progress-title::
        For internal use only.
index dda94a9f46d9a9401c298ee304f57e55db25f217..49a7c5325983a522d281cd73a9037f5fb84d56b3 100644 (file)
@@ -26,7 +26,7 @@
 #include "setup.h"
 
 static const char index_pack_usage[] =
-"git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict] (<pack-file> | --stdin [--fix-thin] [<pack-file>])";
+"git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict[=<msg-id>=<severity>...]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])";
 
 struct object_entry {
        struct pack_idx_entry idx;
index d402ec18b795c7ab5bc1b53d5eaaa4467e37fdbb..496fffa0f8a87af0513c67d759afd87cd54f85ce 100755 (executable)
@@ -441,6 +441,28 @@ test_expect_success 'index-pack with --strict' '
        )
 '
 
+test_expect_success 'index-pack with --strict downgrading fsck msgs' '
+       test_when_finished rm -rf strict &&
+       git init strict &&
+       (
+               cd strict &&
+               test_commit first hello &&
+               cat >commit <<-EOF &&
+               tree $(git rev-parse HEAD^{tree})
+               parent $(git rev-parse HEAD)
+               author A U Thor
+               committer A U Thor
+
+               commit: this is a commit with bad emails
+
+               EOF
+               git hash-object --literally -t commit -w --stdin <commit >commit_list &&
+               PACK=$(git pack-objects test <commit_list) &&
+               test_must_fail git index-pack --strict "test-$PACK.pack" &&
+               git index-pack --strict="missingEmail=ignore" "test-$PACK.pack"
+       )
+'
+
 test_expect_success 'honor pack.packSizeLimit' '
        git config pack.packSizeLimit 3m &&
        packname_10=$(git pack-objects test-10 <obj-list) &&