Re: [PATCH v4 16/20] mktag: allow turning off fsck.extraHeaderEntry
On Wed, Dec 23, 2020 at 02:36:01AM +0100, Ævar Arnfjörð Bjarmason wrote:
Show 21 quoted lines
> In earlier commits mktag learned to use the fsck machinery, at which
> point we needed to add fsck.extraHeaderEntry so it could be as strict
> about extra headers as it's been ever since it was implemented.
>
> But it's not nice to need to switch away from "mktag" to "hash-object"
> + manual "fsck" just because you'd like to have an extra header. So
> let's support turning it off by getting "fsck.*" variables from the
> config.
>
> Pedantically speaking it's still not possible to make "mktag" behave
> just like "hash-object -t tag" does, since we're unconditionally going
> to check the referenced object in verify_object_in_tag(), which is our
> own check, and not one that exists in fsck.c.
>
> But the spirit of "this works like fsck" is preserved, in that if you
> created such a tag with "hash-object" and did a full "fsck" on the
> repository it would also error out about that invalid object, it just
> wouldn't emit the same message as fsck does.
>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
Show 15 quoted lines
> diff --git a/t/t3800-mktag.sh b/t/t3800-mktag.sh
> index d20adf0544..1019b42378 100755
> --- a/t/t3800-mktag.sh
> +++ b/t/t3800-mktag.sh
> @@ -377,6 +377,20 @@ EOF
> check_verify_failure 'detect invalid header entry' \
> '^error:.* extraHeaderEntry:'
>
> +test_expect_success 'invalid header entry config & fsck' '
> + test_must_fail git mktag <tag.sig &&
> + test_must_fail git -c fsck.extraHeaderEntry=error mktag <tag.sig &&
> + test_must_fail git -c fsck.extraHeaderEntry=warn mktag <tag.sig &&
> + git -c fsck.extraHeaderEntry=ignore mktag <tag.sig &&
> + git fsck &&
> + env GIT_TEST_GETTEXT_POISON=false \
Why this 'env GIT_TEST_GETTEXT_POISON=false' here...
> + git -c fsck.extraHeaderEntry=warn fsck 2>err &&
> + grep "warning .*extraHeaderEntry:" err &&
... instead of test_i18ngrep here?
Show 11 quoted lines
> + test_must_fail env GIT_TEST_GETTEXT_POISON=false \
> + git -c fsck.extraHeaderEntry=error 2>err fsck &&
> + grep "error .* extraHeaderEntry:" err
> +'
> +
> cat >tag.sig <<EOF
> object $head
> type commit
> --
> 2.29.2.222.g5d2a92d10f8
>