Subject: [PATCH v2 0/2] index-pack: fsck honor checks

From: "John Cai via GitGitGadget" <[email-masked]>
Date: Fri, 26 Jan 2024 17:12:58 +0000

git-index-pack has a --strict mode that can take an optional argument to
provide a list of fsck issues to change their severity. --fsck-objects does
not have such a utility, which would be useful if one would like to be more
lenient or strict on data integrity in a repository.

Like --strict, Allow --fsck-objects to also take a list of fsck msgs to
change the severity.

Change since V1:

 * edited commit messages
 * clarified formatting in documentation for --strict= and --fsck-objects=

John Cai (2):
  index-pack: test and document --strict=<msg>
  index-pack: --fsck-objects to take an optional argument for fsck msgs

 Documentation/git-index-pack.txt | 19 +++++++++++----
 builtin/index-pack.c             |  5 ++--
 t/t5300-pack-object.sh           | 41 ++++++++++++++++++++++++++++++++
 3 files changed, 59 insertions(+), 6 deletions(-)

base-commit: 186b115d3062e6230ee296d1ddaa0c4b72a464b5
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1658%2Fjohn-cai%2Fjc%2Findex-pack-fsck-honor-checks-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1658/john-cai/jc/index-pack-fsck-honor-checks-v2
Pull-Request: https://github.com/git/git/pull/1658

Range-diff vs v1:

 1:  9b353aff73d ! 1:  b3b3e8bd0bf index-pack: test and document --strict=<msg>
     @@ Commit message
          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 true that most users would not call this option
     -    direction, (nor use index-pack for that matter) it is still useful to
     +    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.
      
          Signed-off-by: John Cai <[email-masked]>
     @@ Documentation/git-index-pack.txt: OPTIONS
       
      ---strict::
      -	Die, if the pack contains broken objects or links.
     -+--strict[=<msg-ids>]::
     ++--strict[=<msg-id>=<severity>...]::
      +	Die, if the pack contains broken objects or links. If `<msg-ids>` is passed,
      +	it should be a comma-separated list of `<msg-id>=<severity>` elements where
      +	`<msg-id>` and `<severity>` are used to change the severity of some possible
     -+	issues, eg: `--strict="missingEmail=ignore,badTagName=error"`. See the entry
     ++	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>`.
       
     @@ t/t5300-pack-object.sh: test_expect_success 'index-pack with --strict' '
      +		author A U Thor
      +		committer A U Thor
      +
     -+		commit: this is a commit wit bad emails
     ++		commit: this is a commit with bad emails
      +
      +		EOF
      +		git hash-object --literally -t commit -w --stdin <commit >commit_list &&
 2:  074e0c7ab92 ! 2:  cce63c6465f index-pack: --fsck-objects to take an optional argument for fsck msgs
     @@ Metadata
       ## Commit message ##
          index-pack: --fsck-objects to take an optional argument for fsck msgs
      
     -    git-index-pack has a --strict mode that can take an optional argument to
     -    provide a list of fsck issues to change their severity. --fsck-objects
     -    does not have such a utility, which would be useful if one would like to
     -    be more lenient or strict on data integrity in a repository.
     +    git-index-pack has a --strict option that can take an optional argument
     +    to provide a list of fsck issues to change their severity.
     +    --fsck-objects does not have such a utility, which would be useful if
     +    one would like to be more lenient or strict on data integrity in a
     +    repository.
      
     -    Like --strict, Allow --fsck-objects to also take a list of fsck msgs to
     +    Like --strict, allow --fsck-objects to also take a list of fsck msgs to
          change the severity.
      
     -    This commit also removes the "For internal use only" note for
     -    --fsck-objects, and documents the option. This won't often be used by
     -    the normal end user, but it turns out it is useful for Git forges like
     -    GitLab.
     +    Remove the "For internal use only" note for --fsck-objects, and document
     +    the option. This won't often be used by the normal end user, but it
     +    turns out it is useful for Git forges like GitLab.
      
          Signed-off-by: John Cai <[email-masked]>
      
     @@ Documentation/git-index-pack.txt: default and "Indexing objects" when `--stdin`
       
      ---fsck-objects::
      -	For internal use only.
     -+--fsck-objects[=<msg-ids>]::
     -+	Instructs index-pack to check for broken objects instead of broken
     -+	links. If `<msg-ids>` is passed, it should be  a comma-separated list of
     -+	`<msg-id>=<severity>` where `<msg-id>` and `<severity>` are used to
     -+	change the severity of `fsck` errors, eg: `--strict="missingEmail=ignore,badTagName=ignore"`.
     -+	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>`.
     ++--fsck-objects[=<msg-ids>=<severity>...]::
     ++	Instructs index-pack to check for broken objects, but unlike `--strict`,
     ++	does not choke on broken links. If `<msg-ids>` is passed, it should be
     ++	a comma-separated list of `<msg-id>=<severity>` where `<msg-id>` and
     ++	`<severity>` are used to change the severity of `fsck` errors e.g.,
     ++	`--strict="missingEmail=ignore,badTagName=ignore"`. 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>`.
       +
       Die if the pack contains broken objects. If the pack contains a tree
       pointing to a .gitmodules blob that does not exist, prints the hash of

-- 
gitgitgadget