index-pack: fsck honor checks
cover index-pack: fsck honor checks
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.
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-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1658/john-cai/jc/index-pack-fsck-honor-checks-v1
Pull-Request: https://github.com/git/git/pull/1658
Signature · 1 line
gitgitgadget
PATCH 1/2 index-pack: test and document --strict=<msg>
From: John Cai <[email protected]>
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 document and test this feature.
--- Documentation/git-index-pack.txt | 9 +++++++-- builtin/index-pack.c | 2 +- t/t5300-pack-object.sh | 22 ++++++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-)
Documentation/git-index-pack.txt +7 -2
@@ -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-ids>]:: + 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 + 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.
builtin/index-pack.c +1 -1
@@ -24,7 +24,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-ids>]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])" ;struct object_entry {struct pack_idx_entry idx;
t/t5300-pack-object.sh +22 -0
@@ -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 wit 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) &&
Signature · 1 line
gitgitgadget
PATCH 2/2 index-pack: --fsck-objects to take an optional argument for fsck msgs
In reply to John Cai via GitGitGadgetFrom: John Cai <[email protected]>
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.
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.
--- Documentation/git-index-pack.txt | 10 ++++++++-- builtin/index-pack.c | 5 +++-- t/t5300-pack-object.sh | 29 ++++++++++++++++++++++++----- 3 files changed, 35 insertions(+), 9 deletions(-)
Documentation/git-index-pack.txt +8 -2
@@ -96,8 +96,14 @@ default and "Indexing objects" when `--stdin` is specified. --check-self-contained-and-connected:: Die if the pack contains broken links. For internal use only. ---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>`. + 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
builtin/index-pack.c +3 -2
@@ -24,7 +24,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[=<msg-ids>]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])" ; +"git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict[=<msg-ids>]] [--fsck-objects[=<msg-ids>]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])" ;struct object_entry {struct pack_idx_entry idx;
@@ -1785,8 +1785,9 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix) }else if (!strcmp (arg,"--check-self-contained-and-connected" )) { strict =1 ; check_self_contained_and_connected =1 ; - }else if (!strcmp (arg,"--fsck-objects" )) { + }else if (skip_to_optional_arg (arg,"--fsck-objects" , &arg)) { do_fsck_object =1 ; +fsck_set_msg_types (&fsck_options, arg); }else if (!strcmp (arg,"--verify" )) { verify =1 ; }else if (!strcmp (arg,"--verify-stat" )) {
t/t5300-pack-object.sh +24 -5
@@ -441,8 +441,7 @@ test_expect_success 'index-pack with --strict' ' ) ' -test_expect_success 'index-pack with --strict downgrading fsck msgs' ' - test_when_finished rm -rf strict && +test_expect_success 'setup for --strict and --fsck-objects downgrading fsck msgs' ' git init strict && ( cd strict &&
@@ -457,12 +456,32 @@ test_expect_success 'index-pack with --strict downgrading fsck msgs' ' 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" + git pack-objects test <commit_list >pack-name ) ' +test_with_bad_commit () { + must_fail_arg="$1" && + must_pass_arg="$2" && + ( + cd strict && + test_expect_fail git index-pack "$must_fail_arg" "test-$(cat pack-name).pack" + git index-pack "$must_pass_arg" "test-$(cat pack-name).pack" + ) +} + +test_expect_success 'index-pack with --strict downgrading fsck msgs' ' + test_with_bad_commit --strict --strict="missingEmail=ignore" +' + +test_expect_success 'index-pack with --fsck-objects downgrading fsck msgs' ' + test_with_bad_commit --fsck-objects --fsck-objects="missingEmail=ignore" +' + +test_expect_success 'cleanup for --strict and --fsck-objects downgrading fsck msgs' ' + rm -rf strict +' + test_expect_success 'honor pack.packSizeLimit' ' git config pack.packSizeLimit 3m && packname_10=$(git pack-objects test-10 <obj-list) &&
Signature · 1 line
gitgitgadget
Re: [PATCH 1/2] index-pack: test and document --strict=<msg>
In reply to John Cai via GitGitGadgetQuoted 7 lines · John Cai via GitGitGadget
From: John Cai <[email protected]>
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
Though it is true that ... call this option directly (nor use index-pack, for that matter), it is still ...
or something like that, probably.
Quoted 1 line
document and test this feature.
And I agree with that. Thanks for adding the necessary doc.
Quoted 1 line
+--strict[=<msg-ids>]::
<msg-id> in the context of "git fsck --help" seems to refer to the left hand side of <msg-id>=<severity>. <msg-ids> sounds as if it is just the list of <msg-id> without saying anything about their severity, which is not what we want to imply.
Either use a made-up word that is clearly different and can not be mistaken as a list of <msg-id>, or spell it out a bit more explicitly, may make it easier to follow?
--strict[=<fsck-config>] --strict[=<msg-id>=<severity>...]
I dunno.
Use of <msg-id> and <severity> below looks good in the body of the paragraph here.
Documentation/git-index-pack.txt OPTIONS · line 88
Quoted 6 lines
Documentation/git-index-pack.txt +6
-0+ 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 + for the `fsck.<msg-id>` configuration options in `linkgit:git-fsck[1] for + more information on the possible values of `<msg-id>` and `<severity>`.
"eg:" -> "e.g.," probably.
Quoted 11 lines
t/t5300-pack-object.sh +3
-0@@ -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 &&
t/t5300-pack-object.sh test_expect_success 'index-pack with --strict' ' · line 456
Quoted 10 lines
t/t5300-pack-object.sh +10
-0+ ( + 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 wit bad emails
"wit" -> "with"; as this typo does not contribute anything to the badness we expect index-pack to notice, it would pay to make sure we do not have it, to avoid distracting readers.
Quoted 11 lines
t/t5300-pack-object.sh +8
-0+ 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) &&
Re: [PATCH 2/2] index-pack: --fsck-objects to take an optional argument for fsck msgs
In reply to John Cai via GitGitGadgetQuoted 3 lines · John Cai via GitGitGadget
From: John Cai <[email protected]>
git-index-pack has a --strict mode that can take an optional argument to
"mode" -> "option", probably.
Quoted 6 lines
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.
"Allow" -> "allow".
Quoted 4 lines
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.
"This commit also removes", "documents" -> "Remove", "document".
Documentation/git-index-pack.txt default and "Indexing objects" when `--stdin` is specified. · line 101
Quoted 5 lines
---fsck-objects::
Documentation/git-index-pack.txt +3
-1- 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
Very much pleased to see an additional description that is written to clarify the difference between this option and the other --strict option. The original was totally unclear on this point, and it is very much appreciated.
The other option notices and dies upon seeing either a broken object or a dangling link. This one only diagnoses broken objects and does not care if the objects are connected. However, saying "instead of" here tempts readers to mistakenly think that the other one only checks links and this one only checks contents, which is not what we want to say. Perhaps "to check for broken objects, but unlike --strict, do not choke on broken links" or something?
Same comment on <msg-ids> as the previous step.
Documentation/git-index-pack.txt default and "Indexing objects" when `--stdin` is specified. · line 103
Quoted 2 lines
Documentation/git-index-pack.txt +2
-0+ `<msg-id>=<severity>` where `<msg-id>` and `<severity>` are used to + change the severity of `fsck` errors, eg: `--strict="missingEmail=ignore,badTagName=ignore"`.
Same comment for "eg:" as before.
builtin/index-pack.c int cmd_index_pack(int argc, const char **argv, const char *prefix) · line 1793
Quoted 11 lines
builtin/index-pack.c +2
-1@@ -1785,8 +1785,9 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix) }else if (!strcmp (arg,"--check-self-contained-and-connected" )) { strict =1 ; check_self_contained_and_connected =1 ; - }else if (!strcmp (arg,"--fsck-objects" )) { + }else if (skip_to_optional_arg (arg,"--fsck-objects" , &arg)) { do_fsck_object =1 ; +fsck_set_msg_types (&fsck_options, arg); }else if (!strcmp (arg,"--verify" )) { verify =1 ; }else if (!strcmp (arg,"--verify-stat" )) {
The implementation of this part looks quite obvious, once you see how "--strict[=<msgid>=<level>]" is implemented.
Looking good.
Thanks.
v2 cover index-pack: fsck honor checks
In reply to John Cai via GitGitGadgetgit-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.
@@ 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.
@@ 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
Signature · 1 line
gitgitgadget
PATCH v2 1/2 index-pack: test and document --strict=<msg>
From: John Cai <[email protected]>
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.
--- Documentation/git-index-pack.txt | 9 +++++++-- builtin/index-pack.c | 2 +- t/t5300-pack-object.sh | 22 ++++++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-)
Documentation/git-index-pack.txt +7 -2
@@ -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. 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, 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.
builtin/index-pack.c +1 -1
@@ -24,7 +24,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-ids>]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])" ;struct object_entry {struct pack_idx_entry idx;
t/t5300-pack-object.sh +22 -0
@@ -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) &&
Signature · 1 line
gitgitgadget
PATCH v2 2/2 index-pack: --fsck-objects to take an optional argument for fsck msgs
In reply to John Cai via GitGitGadgetFrom: John Cai <[email protected]>
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 change the severity.
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.
--- Documentation/git-index-pack.txt | 10 ++++++++-- builtin/index-pack.c | 5 +++-- t/t5300-pack-object.sh | 29 ++++++++++++++++++++++++----- 3 files changed, 35 insertions(+), 9 deletions(-)
Documentation/git-index-pack.txt +8 -2
@@ -96,8 +96,14 @@ default and "Indexing objects" when `--stdin` is specified. --check-self-contained-and-connected:: Die if the pack contains broken links. For internal use only. ---fsck-objects:: - For internal use only. +--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
builtin/index-pack.c +3 -2
@@ -24,7 +24,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[=<msg-ids>]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])" ; +"git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict[=<msg-ids>]] [--fsck-objects[=<msg-ids>]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])" ;struct object_entry {struct pack_idx_entry idx;
@@ -1785,8 +1785,9 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix) }else if (!strcmp (arg,"--check-self-contained-and-connected" )) { strict =1 ; check_self_contained_and_connected =1 ; - }else if (!strcmp (arg,"--fsck-objects" )) { + }else if (skip_to_optional_arg (arg,"--fsck-objects" , &arg)) { do_fsck_object =1 ; +fsck_set_msg_types (&fsck_options, arg); }else if (!strcmp (arg,"--verify" )) { verify =1 ; }else if (!strcmp (arg,"--verify-stat" )) {
t/t5300-pack-object.sh +24 -5
@@ -441,8 +441,7 @@ test_expect_success 'index-pack with --strict' ' ) ' -test_expect_success 'index-pack with --strict downgrading fsck msgs' ' - test_when_finished rm -rf strict && +test_expect_success 'setup for --strict and --fsck-objects downgrading fsck msgs' ' git init strict && ( cd strict &&
@@ -457,12 +456,32 @@ test_expect_success 'index-pack with --strict downgrading fsck msgs' ' 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" + git pack-objects test <commit_list >pack-name ) ' +test_with_bad_commit () { + must_fail_arg="$1" && + must_pass_arg="$2" && + ( + cd strict && + test_expect_fail git index-pack "$must_fail_arg" "test-$(cat pack-name).pack" + git index-pack "$must_pass_arg" "test-$(cat pack-name).pack" + ) +} + +test_expect_success 'index-pack with --strict downgrading fsck msgs' ' + test_with_bad_commit --strict --strict="missingEmail=ignore" +' + +test_expect_success 'index-pack with --fsck-objects downgrading fsck msgs' ' + test_with_bad_commit --fsck-objects --fsck-objects="missingEmail=ignore" +' + +test_expect_success 'cleanup for --strict and --fsck-objects downgrading fsck msgs' ' + rm -rf strict +' + test_expect_success 'honor pack.packSizeLimit' ' git config pack.packSizeLimit 3m && packname_10=$(git pack-objects test-10 <obj-list) &&
Signature · 1 line
gitgitgadget
Re: [PATCH v2 1/2] index-pack: test and document --strict=<msg>
In reply to John Cai via GitGitGadgetQuoted 21 lines · John Cai via GitGitGadget
From: John Cai <[email protected]>
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.Signed-off-by John Cai <[email protected]>--- Documentation/git-index-pack.txt | 9 +++++++-- builtin/index-pack.c | 2 +- t/t5300-pack-object.sh | 22 ++++++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-)Documentation/git-index-pack.txt +0
-0
Documentation/git-index-pack.txt OPTIONS · line 86
Quoted 10 lines
Documentation/git-index-pack.txt +5
-2@@ -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. 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, e.g., `--strict="missingEmail=ignore,badTagName=error"`. See the entry
There no longer is <msg-ids>, so I'll tweak the text perhaps like so:
An optional value that is a comma-separated list of '<msg-id>=<severity>' can be passed to change the severity of some possible issues, ...
while queueing. Will probably do the same for the --fsck-objects side in the next patch.
Other than that, thanks for a pleasant read.
Quoted 51 lines
Documentation/git-index-pack.txt +2
-0+ 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.builtin/index-pack.c +1
-1@@ -24,7 +24,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-ids>]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])" ;struct object_entry {struct pack_idx_entry idx;t/t5300-pack-object.sh +22
-0@@ -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) &&
Re: [PATCH v2 2/2] index-pack: --fsck-objects to take an optional argument for fsck msgs
In reply to John Cai via GitGitGadgetDocumentation/git-index-pack.txt default and "Indexing objects" when `--stdin` is specified. · line 104
Quoted 6 lines · John Cai via GitGitGadget
+--fsck-objects[=<msg-ids>=<severity>...]::
Documentation/git-index-pack.txt +5
-0+ 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
In addition to the comment I made in my reply to 1/2, this should be --fsck-objects="missingEmail=ignore,badTagName=ignore", I think. Will treak locally.
Thanks.
Re: [PATCH v2 2/2] index-pack: --fsck-objects to take an optional argument for fsck msgs
Hi Junio,
Quoted 12 lines · Junio C Hamano
Documentation/git-index-pack.txt default and "Indexing objects" when `--stdin` is specified. · line 104
Quoted 6 lines · John Cai via GitGitGadget
+--fsck-objects[=<msg-ids>=<severity>...]::
Documentation/git-index-pack.txt +5
-0+ 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 forIn addition to the comment I made in my reply to 1/2, this should be
--fsck-objects="missingEmail=ignore,badTagName=ignore", I think. Will treak locally.
Good catch. I might as well re-roll this since I forgot to add a Reviewed-by:
Christian Couder <[email protected]> trailer to the commits.
Quoted 2 lines
Thanks.
v3 cover index-pack: fsck honor checks
In reply to John Cai via GitGitGadgetgit-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.
Changes since V2:
* fixed some typos in the documentation
* added commit trailers
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-id>=<severity>...
index-pack: --fsck-objects to take an optional argument for fsck msgs
Documentation/git-index-pack.txt | 26 +++++++++++++------- builtin/index-pack.c | 5 ++-- t/t5300-pack-object.sh | 41 ++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 10 deletions(-)
base-commit: 186b115d3062e6230ee296d1ddaa0c4b72a464b5
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1658%2Fjohn-cai%2Fjc%2Findex-pack-fsck-honor-checks-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1658/john-cai/jc/index-pack-fsck-honor-checks-v3
Pull-Request: https://github.com/git/git/pull/1658
Range-diff vs v2:
1: b3b3e8bd0bf ! 1: cdf7fc7fe8a index-pack: test and document --strict=<msg>
@@ Metadata
Author: John Cai <[email protected]>
## Commit message ##
- index-pack: test and document --strict=<msg>
+ index-pack: test and document --strict=<msg-id>=<severity>...
5d477a334a (fsck (receive-pack): allow demoting errors to warnings, 2015-06-22) allowed a list of fsck msg to downgrade to be passed to
@@ Commit message
directly, (nor use index-pack for that matter) it is still useful to document and test this feature.
+ Reviewed-by: Christian Couder <[email protected]>
## Documentation/git-index-pack.txt ##
@@ Documentation/git-index-pack.txt: OPTIONS
---strict::
- Die, if the pack contains broken objects or links.
+--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, 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>.
++ 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.
@@ builtin/index-pack.c
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-ids>]] (<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;
2: cce63c6465f ! 2: a2b9adb93d8 index-pack: --fsck-objects to take an optional argument for fsck msgs
@@ Commit message
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.
+ Reviewed-by: Christian Couder <[email protected]>
## Documentation/git-index-pack.txt ##
@@ Documentation/git-index-pack.txt: default and "Indexing objects" when --stdin
---fsck-objects::
- For internal use only.
-+--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>.
++--fsck-objects[=<msg-id>=<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
++ that blob (for the caller to check) after the hash that goes into the
++ name of the pack/idx file (see "Notes").
+
- 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 +-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 +-that blob (for the caller to check) after the hash that goes into the +-name of the pack/idx file (see "Notes").
++Unlike --strict however, don't choke on broken links. An optional ++comma-separated list of <msg-id>=<severity> can be passed to change the ++severity of some possible issues, e.g., ++--fsck-objects="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>. +
+ --threads=<n>::
+ Specifies the number of threads to spawn when resolving
## builtin/index-pack.c ##
@@
#include "setup.h"
static const char index_pack_usage[] =
--"git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict[=<msg-ids>]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])";
-+"git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict[=<msg-ids>]] [--fsck-objects[=<msg-ids>]] (<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>])"; ++"git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict[=<msg-id>=<severity>...]] [--fsck-objects[=<msg-id>=<severity>...]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])";
struct object_entry {
struct pack_idx_entry idx;
Signature · 1 line
gitgitgadget
PATCH v3 1/2 index-pack: test and document --strict=<msg-id>=<severity>...
From: John Cai <[email protected]>
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.
--- Documentation/git-index-pack.txt | 9 +++++++-- builtin/index-pack.c | 2 +- t/t5300-pack-object.sh | 22 ++++++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-)
Documentation/git-index-pack.txt +7 -2
@@ -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.
builtin/index-pack.c +1 -1
@@ -24,7 +24,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;
t/t5300-pack-object.sh +22 -0
@@ -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) &&
Signature · 1 line
gitgitgadget
PATCH v3 2/2 index-pack: --fsck-objects to take an optional argument for fsck msgs
In reply to John Cai via GitGitGadgetFrom: John Cai <[email protected]>
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 change the severity.
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.
--- Documentation/git-index-pack.txt | 17 +++++++++++------ builtin/index-pack.c | 5 +++-- t/t5300-pack-object.sh | 29 ++++++++++++++++++++++++----- 3 files changed, 38 insertions(+), 13 deletions(-)
Documentation/git-index-pack.txt +11 -6
@@ -96,13 +96,18 @@ default and "Indexing objects" when `--stdin` is specified. --check-self-contained-and-connected:: Die if the pack contains broken links. For internal use only. ---fsck-objects:: - For internal use only. +--fsck-objects[=<msg-id>=<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 + that blob (for the caller to check) after the hash that goes into the + name of the pack/idx file (see "Notes"). + -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 -that blob (for the caller to check) after the hash that goes into the -name of the pack/idx file (see "Notes"). +Unlike `--strict` however, don't choke on broken links. An optional +comma-separated list of `<msg-id>=<severity>` can be passed to change the +severity of some possible issues, e.g., +`--fsck-objects="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>`. --threads=<n>:: Specifies the number of threads to spawn when resolving
builtin/index-pack.c +3 -2
@@ -24,7 +24,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[=<msg-id>=<severity>...]] (<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>...]] [--fsck-objects[=<msg-id>=<severity>...]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])" ;struct object_entry {struct pack_idx_entry idx;
@@ -1785,8 +1785,9 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix) }else if (!strcmp (arg,"--check-self-contained-and-connected" )) { strict =1 ; check_self_contained_and_connected =1 ; - }else if (!strcmp (arg,"--fsck-objects" )) { + }else if (skip_to_optional_arg (arg,"--fsck-objects" , &arg)) { do_fsck_object =1 ; +fsck_set_msg_types (&fsck_options, arg); }else if (!strcmp (arg,"--verify" )) { verify =1 ; }else if (!strcmp (arg,"--verify-stat" )) {
t/t5300-pack-object.sh +24 -5
@@ -441,8 +441,7 @@ test_expect_success 'index-pack with --strict' ' ) ' -test_expect_success 'index-pack with --strict downgrading fsck msgs' ' - test_when_finished rm -rf strict && +test_expect_success 'setup for --strict and --fsck-objects downgrading fsck msgs' ' git init strict && ( cd strict &&
@@ -457,12 +456,32 @@ test_expect_success 'index-pack with --strict downgrading fsck msgs' ' 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" + git pack-objects test <commit_list >pack-name ) ' +test_with_bad_commit () { + must_fail_arg="$1" && + must_pass_arg="$2" && + ( + cd strict && + test_expect_fail git index-pack "$must_fail_arg" "test-$(cat pack-name).pack" + git index-pack "$must_pass_arg" "test-$(cat pack-name).pack" + ) +} + +test_expect_success 'index-pack with --strict downgrading fsck msgs' ' + test_with_bad_commit --strict --strict="missingEmail=ignore" +' + +test_expect_success 'index-pack with --fsck-objects downgrading fsck msgs' ' + test_with_bad_commit --fsck-objects --fsck-objects="missingEmail=ignore" +' + +test_expect_success 'cleanup for --strict and --fsck-objects downgrading fsck msgs' ' + rm -rf strict +' + test_expect_success 'honor pack.packSizeLimit' ' git config pack.packSizeLimit 3m && packname_10=$(git pack-objects test-10 <obj-list) &&
Signature · 1 line
gitgitgadget
Quoted 7 lines · John Cai via GitGitGadget
1:
b3b3e8bd0bf! 1:cdf7fc7fe8aindex-pack: test and document --strict=<msg>
@@ Metadata
Author: John Cai <[email protected]>## Commit message ##
- index-pack: test and document --strict=<msg>
+ index-pack: test and document --strict=<msg-id>=<severity>...
Ah, I missed this one. Nice spotting.
Quoted 8 lines
5d477a334a(fsck (receive-pack): allow demoting errors to warnings, 2015-06-22) allowed a list of fsck msg to downgrade to be passed to
@@ Commit message
directly, (nor use index-pack for that matter) it is still useful to document and test this feature.+ Reviewed-by: Christian Couder <[email protected]>
Signed-off-by John Cai <[email protected]>
I haven't seen Christian involved (by getting Cc'ed these patches, sending out review comments, or giving his Reviewed-by:) during these three rounds of this topic. I'll wait until I hear from him before queuing this, just to be safe.
Quoted 6 lines
++ 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>.
This is much better than the tentative text I tweaked. Nice.
Quoted 5 lines
++--fsck-objects[=<msg-id>=<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
++ that blob (for the caller to check) after the hash that goes into the
++ name of the pack/idx file (see "Notes").
Not a new problem bit I have to wonder what happens if the pack contains many trees that point at different blobs for ".gitmodules" path and many of these blobs are not included in the packfile? Will the caller receive all of these blob object names so that they can be verified? The reference to the "Notes" only refer to the fact that usually a single hash value that is used in constructing the name of the packfile "pack-<Hashvalue>.pack" is emitted to the standard output, which is not wrong per se, but does not help readers very much wrt to understanding this.
[jc: dragging JTan into the thread, as this comes from his 5476e1ef (fetch-pack: print and use dangling .gitmodules, 2021-02-22)].
Quoted 2 lines
+
++Unlike--stricthowever, don't choke on broken links. An optional
You'd need a comma on both sides of "however" used like this, I think.
In any case, I thought your original construction to have this "unlike" immediately after "die on broken objects" was far easier to follow.
Thanks.
Hi Junio,
Quoted 18 lines · Junio C Hamano
Quoted 7 lines · John Cai via GitGitGadget
1:
b3b3e8bd0bf! 1:cdf7fc7fe8aindex-pack: test and document --strict=<msg>
@@ Metadata
Author: John Cai <[email protected]>## Commit message ##
- index-pack: test and document --strict=<msg>
+ index-pack: test and document --strict=<msg-id>=<severity>...Ah, I missed this one. Nice spotting.
Quoted 6 lines
5d477a334a(fsck (receive-pack): allow demoting errors to warnings, 2015-06-22) allowed a list of fsck msg to downgrade to be passed to
@@ Commit message
directly, (nor use index-pack for that matter) it is still useful to document and test this feature.
Quoted 7 lines
Quoted 2 lines
+ Reviewed-by: Christian Couder <[email protected]>
Signed-off-by John Cai <[email protected]>I haven't seen Christian involved (by getting Cc'ed these patches, sending out review comments, or giving his Reviewed-by:) during these three rounds of this topic. I'll wait until I hear from him before queuing this, just to be safe.
Christian was involved on an off-list review of this patch series. You can see it in [1].
1. https://gitlab.com/gitlab-org/git/-/merge_requests/88
Quoted 26 lines
Quoted 7 lines
++ 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>.This is much better than the tentative text I tweaked. Nice.
Quoted 5 lines
++--fsck-objects[=<msg-id>=<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
++ that blob (for the caller to check) after the hash that goes into the
++ name of the pack/idx file (see "Notes").Not a new problem bit I have to wonder what happens if the pack contains many trees that point at different blobs for ".gitmodules" path and many of these blobs are not included in the packfile? Will the caller receive all of these blob object names so that they can be verified? The reference to the "Notes" only refer to the fact that usually a single hash value that is used in constructing the name of the packfile "pack-<Hashvalue>.pack" is emitted to the standard output, which is not wrong per se, but does not help readers very much wrt to understanding this.
Quoted 2 lines
[jc: dragging JTan into the thread, as this comes from his
5476e1ef(fetch-pack: print and use dangling .gitmodules, 2021-02-22)].
sounds good, will wait for some clarification here
Quoted 6 lines
Quoted 3 lines
+
++Unlike--stricthowever, don't choke on broken links. An optionalYou'd need a comma on both sides of "however" used like this, I think.
good catch
Quoted 4 lines
In any case, I thought your original construction to have this "unlike" immediately after "die on broken objects" was far easier to follow.
I'll reformulate this to be clearer. From the previous version I realized I didn't take into account the pre-existing "Die if the pack contains broken objects" block so I put it at the beginning. But now I think you're right in that the "Unlike..." comes too late.
Quoted 2 lines
Thanks.
Quoted 16 lines · Junio C Hamano
Quoted 5 lines
++--fsck-objects[=<msg-id>=<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
++ that blob (for the caller to check) after the hash that goes into the
++ name of the pack/idx file (see "Notes").Not a new problem bit I have to wonder what happens if the pack contains many trees that point at different blobs for ".gitmodules" path and many of these blobs are not included in the packfile? Will the caller receive all of these blob object names so that they can be verified? The reference to the "Notes" only refer to the fact that usually a single hash value that is used in constructing the name of the packfile "pack-<Hashvalue>.pack" is emitted to the standard output, which is not wrong per se, but does not help readers very much wrt to understanding this.
Quoted 2 lines
[jc: dragging JTan into the thread, as this comes from his
5476e1ef(fetch-pack: print and use dangling .gitmodules, 2021-02-22)].
Ah...I can see how that documentation isn't clear. The intention of that commit is to check every link to a .gitmodules blob. The tests perhaps should have been written with 2 .gitmodules blobs (in separate commits), but I think the production code works: I tried changing the test to have 2 commits each with their own .gitmodules blob, and error messages were printed for both blobs.
(If someone changes that test, e.g. to have 2 blobs, the ">h" in the "configure_exclusion" invocations look superfluous and is perhaps a copy-and-paste error from other tests that needed the hash later.)
Hi Jonathan,
Quoted 20 lines · Jonathan Tan
Quoted 16 lines · Junio C Hamano
Quoted 5 lines
++--fsck-objects[=<msg-id>=<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
++ that blob (for the caller to check) after the hash that goes into the
++ name of the pack/idx file (see "Notes").Not a new problem bit I have to wonder what happens if the pack contains many trees that point at different blobs for ".gitmodules" path and many of these blobs are not included in the packfile? Will the caller receive all of these blob object names so that they can be verified? The reference to the "Notes" only refer to the fact that usually a single hash value that is used in constructing the name of the packfile "pack-<Hashvalue>.pack" is emitted to the standard output, which is not wrong per se, but does not help readers very much wrt to understanding this.
Quoted 2 lines
[jc: dragging JTan into the thread, as this comes from his
5476e1ef(fetch-pack: print and use dangling .gitmodules, 2021-02-22)].
Quoted 6 lines
Ah...I can see how that documentation isn't clear. The intention of that commit is to check every link to a .gitmodules blob. The tests perhaps should have been written with 2 .gitmodules blobs (in separate commits), but I think the production code works: I tried changing the test to have 2 commits each with their own .gitmodules blob, and error messages were printed for both blobs.
Thanks for clarifying! Would you mind providing a patch to revise the wording here to make it clearer? I would try but I feel like I might get the wording wrong.
Quoted 4 lines
(If someone changes that test, e.g. to have 2 blobs, the ">h" in the "
configure_exclusion" invocations look superfluous and is perhaps a copy-and-paste error from other tests that needed the hash later.)
thanks
John
Quoted 30 lines · John Cai
Hi Junio,
Quoted 18 lines · Junio C Hamano
Quoted 7 lines · John Cai via GitGitGadget
1:
b3b3e8bd0bf! 1:cdf7fc7fe8aindex-pack: test and document --strict=<msg>
@@ Metadata
Author: John Cai <[email protected]>## Commit message ##
- index-pack: test and document --strict=<msg>
+ index-pack: test and document --strict=<msg-id>=<severity>...Ah, I missed this one. Nice spotting.
Quoted 6 lines
5d477a334a(fsck (receive-pack): allow demoting errors to warnings, 2015-06-22) allowed a list of fsck msg to downgrade to be passed to
@@ Commit message
directly, (nor use index-pack for that matter) it is still useful to document and test this feature.Quoted 7 lines
Quoted 2 lines
+ Reviewed-by: Christian Couder <[email protected]>
Signed-off-by John Cai <[email protected]>I haven't seen Christian involved (by getting Cc'ed these patches, sending out review comments, or giving his Reviewed-by:) during these three rounds of this topic. I'll wait until I hear from him before queuing this, just to be safe.
Quoted 4 lines
Christian was involved on an off-list review of this patch series. You can see it in [1].
I'm always a bit hesitant to add trailers referring to off-list reviews to commits. It's impossible for a future reader to discover how that trailer came to be by just using the mailing list archive, and expecting them to use third-party services to verify them feels wrong to me.
It's part of the reason why I'm pushing more into the direction of on-list reviews at GitLab. It makes it a lot more obvious how such a Reviewed-by came to be and keeps things self-contained on the mailing list. It also grows new contributors who are becoming more familiar with how the Git mailing list works. If such a review already happened internally due to whatever reason then I think it ought to be fine for that reviewer to chime in saying that they have already reviewed the patch series and that things look good to them.
Patrick
Quoted 5 lines · Patrick Steinhardt
I'm always a bit hesitant to add trailers referring to off-list reviews to commits. It's impossible for a future reader to discover how that trailer came to be by just using the mailing list archive, and expecting them to use third-party services to verify them feels wrong to me.
Quoted 8 lines
It's part of the reason why I'm pushing more into the direction of on-list reviews at GitLab. It makes it a lot more obvious how such a Reviewed-by came to be and keeps things self-contained on the mailing list. It also grows new contributors who are becoming more familiar with how the Git mailing list works. If such a review already happened internally due to whatever reason then I think it ought to be fine for that reviewer to chime in saying that they have already reviewed the patch series and that things look good to them.
Thanks. That would improve clarifying a situation like this one (eh, actually, once it is done this particular situation wouldn't need any clarification).
Quoted 11 lines · John Cai
Hi Jonathan,
Quoted 6 lines · Jonathan Tan
Quoted 5 lines · Junio C Hamano
Quoted 5 lines
++--fsck-objects[=<msg-id>=<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
++ that blob (for the caller to check) after the hash that goes into the
++ name of the pack/idx file (see "Notes").
Quoted 3 lines
Thanks for clarifying! Would you mind providing a patch to revise the wording here to make it clearer? I would try but I feel like I might get the wording wrong.
I think the wording there is already mostly correct, except maybe make everything plural (a tree -> trees, a .gitmodules blob -> .gitmodules blobs, hash of that blob -> hashes of those blobs). We might also need to modify a test to show that the current code indeed handles the plural situation correctly. I don't have time right now to get to this, so hopefully someone could pick this up.
Hi Jonathan,
Quoted 16 lines · Jonathan Tan
Quoted 11 lines · John Cai
Hi Jonathan,
Quoted 6 lines · Jonathan Tan
Quoted 5 lines · Junio C Hamano
Quoted 5 lines
++--fsck-objects[=<msg-id>=<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
++ that blob (for the caller to check) after the hash that goes into the
++ name of the pack/idx file (see "Notes").Quoted 3 lines
Thanks for clarifying! Would you mind providing a patch to revise the wording here to make it clearer? I would try but I feel like I might get the wording wrong.
Quoted 6 lines
I think the wording there is already mostly correct, except maybe make everything plural (a tree -> trees, a .gitmodules blob -> .gitmodules blobs, hash of that blob -> hashes of those blobs). We might also need to modify a test to show that the current code indeed handles the plural situation correctly. I don't have time right now to get to this, so hopefully someone could pick this up.
Thanks! It sounds like we may want to tackle this as part of another patch.
John
v4 cover index-pack: fsck honor checks
In reply to John Cai via GitGitGadgetgit-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.
Changes since V3:
* clarification of --fsck-objects documentation wording
Changes since V2:
* fixed some typos in the documentation
* added commit trailers
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-id>=<severity>...
index-pack: --fsck-objects to take an optional argument for fsck msgs
Documentation/git-index-pack.txt | 26 +++++++++++++------- builtin/index-pack.c | 5 ++-- t/t5300-pack-object.sh | 41 ++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 10 deletions(-)
base-commit: 186b115d3062e6230ee296d1ddaa0c4b72a464b5
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1658%2Fjohn-cai%2Fjc%2Findex-pack-fsck-honor-checks-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1658/john-cai/jc/index-pack-fsck-honor-checks-v4
Pull-Request: https://github.com/git/git/pull/1658
Range-diff vs v3:
1: cdf7fc7fe8a = 1: cdf7fc7fe8a index-pack: test and document --strict=<msg-id>=<severity>... 2: a2b9adb93d8 ! 2: f29ab9136fb index-pack: --fsck-objects to take an optional argument for fsck msgs
@@ Documentation/git-index-pack.txt: default and "Indexing objects" when --stdin
---fsck-objects::
- For internal use only.
+--fsck-objects[=<msg-id>=<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
-+ that blob (for the caller to check) after the hash that goes into the
-+ name of the pack/idx file (see "Notes").
++ Die if the pack contains broken objects, but unlike --strict, don't
++ choke on broken links. If the pack contains a tree pointing to a
++ .gitmodules blob that does not exist, prints the hash of that blob
++ (for the caller to check) after the hash that goes into the name of the
++ pack/idx file (see "Notes").
+
-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 -that blob (for the caller to check) after the hash that goes into the -name of the pack/idx file (see "Notes").
-+Unlike --strict however, don't choke on broken links. An optional -+comma-separated list of <msg-id>=<severity> can be passed to change the -+severity of some possible issues, e.g.,
++An optional comma-separated list of <msg-id>=<severity> can be passed to ++change the severity of some possible issues, e.g.,
+--fsck-objects="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>.
Signature · 1 line
gitgitgadget
PATCH v4 1/2 index-pack: test and document --strict=<msg-id>=<severity>...
From: John Cai <[email protected]>
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.
--- Documentation/git-index-pack.txt | 9 +++++++-- builtin/index-pack.c | 2 +- t/t5300-pack-object.sh | 22 ++++++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-)
Documentation/git-index-pack.txt +7 -2
@@ -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.
builtin/index-pack.c +1 -1
@@ -24,7 +24,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;
t/t5300-pack-object.sh +22 -0
@@ -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) &&
Signature · 1 line
gitgitgadget
PATCH v4 2/2 index-pack: --fsck-objects to take an optional argument for fsck msgs
In reply to John Cai via GitGitGadgetFrom: John Cai <[email protected]>
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 change the severity.
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.
--- Documentation/git-index-pack.txt | 17 +++++++++++------ builtin/index-pack.c | 5 +++-- t/t5300-pack-object.sh | 29 ++++++++++++++++++++++++----- 3 files changed, 38 insertions(+), 13 deletions(-)
Documentation/git-index-pack.txt +11 -6
@@ -96,13 +96,18 @@ default and "Indexing objects" when `--stdin` is specified. --check-self-contained-and-connected:: Die if the pack contains broken links. For internal use only. ---fsck-objects:: - For internal use only. +--fsck-objects[=<msg-id>=<severity>...]:: + Die if the pack contains broken objects, but unlike `--strict`, don't + choke on broken links. If the pack contains a tree pointing to a + .gitmodules blob that does not exist, prints the hash of that blob + (for the caller to check) after the hash that goes into the name of the + pack/idx file (see "Notes"). + -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 -that blob (for the caller to check) after the hash that goes into the -name of the pack/idx file (see "Notes"). +An optional comma-separated list of `<msg-id>=<severity>` can be passed to +change the severity of some possible issues, e.g., +`--fsck-objects="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>`. --threads=<n>:: Specifies the number of threads to spawn when resolving
builtin/index-pack.c +3 -2
@@ -24,7 +24,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[=<msg-id>=<severity>...]] (<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>...]] [--fsck-objects[=<msg-id>=<severity>...]] (<pack-file> | --stdin [--fix-thin] [<pack-file>])" ;struct object_entry {struct pack_idx_entry idx;
@@ -1785,8 +1785,9 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix) }else if (!strcmp (arg,"--check-self-contained-and-connected" )) { strict =1 ; check_self_contained_and_connected =1 ; - }else if (!strcmp (arg,"--fsck-objects" )) { + }else if (skip_to_optional_arg (arg,"--fsck-objects" , &arg)) { do_fsck_object =1 ; +fsck_set_msg_types (&fsck_options, arg); }else if (!strcmp (arg,"--verify" )) { verify =1 ; }else if (!strcmp (arg,"--verify-stat" )) {
t/t5300-pack-object.sh +24 -5
@@ -441,8 +441,7 @@ test_expect_success 'index-pack with --strict' ' ) ' -test_expect_success 'index-pack with --strict downgrading fsck msgs' ' - test_when_finished rm -rf strict && +test_expect_success 'setup for --strict and --fsck-objects downgrading fsck msgs' ' git init strict && ( cd strict &&
@@ -457,12 +456,32 @@ test_expect_success 'index-pack with --strict downgrading fsck msgs' ' 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" + git pack-objects test <commit_list >pack-name ) ' +test_with_bad_commit () { + must_fail_arg="$1" && + must_pass_arg="$2" && + ( + cd strict && + test_expect_fail git index-pack "$must_fail_arg" "test-$(cat pack-name).pack" + git index-pack "$must_pass_arg" "test-$(cat pack-name).pack" + ) +} + +test_expect_success 'index-pack with --strict downgrading fsck msgs' ' + test_with_bad_commit --strict --strict="missingEmail=ignore" +' + +test_expect_success 'index-pack with --fsck-objects downgrading fsck msgs' ' + test_with_bad_commit --fsck-objects --fsck-objects="missingEmail=ignore" +' + +test_expect_success 'cleanup for --strict and --fsck-objects downgrading fsck msgs' ' + rm -rf strict +' + test_expect_success 'honor pack.packSizeLimit' ' git config pack.packSizeLimit 3m && packname_10=$(git pack-objects test-10 <obj-list) &&
Signature · 1 line
gitgitgadget
Quoted 4 lines · John Cai
Quoted 4 lines
Quoted 3 lines
Thanks for clarifying! Would you mind providing a patch to revise the wording here to make it clearer? I would try but I feel like I might get the wording wrong.
Quoted 8 lines
Quoted 6 lines
I think the wording there is already mostly correct, except maybe make everything plural (a tree -> trees, a .gitmodules blob -> .gitmodules blobs, hash of that blob -> hashes of those blobs). We might also need to modify a test to show that the current code indeed handles the plural situation correctly. I don't have time right now to get to this, so hopefully someone could pick this up.
Thanks! It sounds like we may want to tackle this as part of another patch.
Yeah, the existing documentation has been with our users for some time, and it is not ultra urgent to fix it in that sense. I'd say that it can even wait until JTan gets bored with what he's doing and needs some distraction himself ;-)
As long as our collective mind remembers it as #leftoverbits it would be sufficient.
Thanks, both.
(John, sorry for having already sent this only to you.)
Quoted 18 lines · John Cai via GitGitGadget
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.
Changes since V3:
* clarification of --fsck-objects documentation wording
Changes since V2:
* fixed some typos in the documentation
* added commit trailers
Quoted 8 lines
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-id>=<severity>...
index-pack: --fsck-objects to take an optional argument for fsck msgs
I reviewed internally on GitLab the initial versions of this series and I reviewed this version 4. It looks great to me, so I am happy to give my "Reviewed-by:".
Thanks!
Re: [PATCH v4 2/2] index-pack: --fsck-objects to take an optional argument for fsck msgs
In reply to John Cai via GitGitGadgetQuoted 21 lines · John Cai via GitGitGadget
t/t5300-pack-object.sh +1
-5@@ -441,8 +441,7 @@ test_expect_success 'index-pack with --strict' ' ) ' -test_expect_success 'index-pack with --strict downgrading fsck msgs' ' - test_when_finished rm -rf strict && +test_expect_success 'setup for --strict and --fsck-objects downgrading fsck msgs' ' git init strict && ( cd strict &&@@ -457,12 +456,32 @@ test_expect_success 'index-pack with --strict downgrading fsck msgs' ' 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"
t/t5300-pack-object.sh test_expect_success 'index-pack with --strict downgrading fsck msgs' ' · line 468
Quoted 10 lines
t/t5300-pack-object.sh +7
-0+ git pack-objects test <commit_list >pack-name ) ' +test_with_bad_commit () { + must_fail_arg="$1" && + must_pass_arg="$2" && + ( + cd strict && + test_expect_fail git index-pack "$must_fail_arg" "test-$(cat pack-name).pack"
There is no such command as 'test_expect_fail', resulting in:
expecting success of 5300.34 'index-pack with --strict downgrading fsck msgs':
test_with_bad_commit --strict --strict="missingEmail=ignore"
+ test_with_bad_commit --strict --strict=missingEmail=ignore
+ must_fail_arg=--strict
+ must_pass_arg=--strict=missingEmail=ignore
+ cd strict
+ cat pack-name
+ test_expect_fail git index-pack --strict test-e4e1649155bf444fbd9cd85e376628d6eaf3d3bd.pack ./t5300-pack-object.sh: 468: eval: test_expect_fail: not found
+ cat pack-name
+ git index-pack --strict=missingEmail=ignore test-e4e1649155bf444fbd9cd85e376628d6eaf3d3bd.pack e4e1649155bf444fbd9cd85e376628d6eaf3d3bd
ok 34 - index-pack with --strict downgrading fsck msgs
The missing command should fail the test, but it doesn't, because the &&-chain is broken on this line as well.
Re: [PATCH v4 2/2] index-pack: --fsck-objects to take an optional argument for fsck msgs
Hi Szeder,
Quoted 26 lines · SZEDER Gábor
Quoted 25 lines · John Cai via GitGitGadget
t/t5300-pack-object.sh +2
-5@@ -441,8 +441,7 @@ test_expect_success 'index-pack with --strict' ' ) ' -test_expect_success 'index-pack with --strict downgrading fsck msgs' ' - test_when_finished rm -rf strict && +test_expect_success 'setup for --strict and --fsck-objects downgrading fsck msgs' ' git init strict && ( cd strict &&@@ -457,12 +456,32 @@ test_expect_success 'index-pack with --strict downgrading fsck msgs' ' 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" + git pack-objects test <commit_list >pack-name ) '
Quoted 8 lines
t/t5300-pack-object.sh test_expect_success 'index-pack with --strict downgrading fsck msgs' ' · line 468
Quoted 6 lines
t/t5300-pack-object.sh +6
-0+test_with_bad_commit () { + must_fail_arg="$1" && + must_pass_arg="$2" && + ( + cd strict && + test_expect_fail git index-pack "$must_fail_arg" "test-$(cat pack-name).pack"There is no such command as '
test_expect_fail', resulting in:
Indeed, thanks for catching this.
Quoted 15 lines
expecting success of 5300.34 'index-pack with --strict downgrading fsck msgs':
test_with_bad_commit --strict --strict="missingEmail=ignore"+
test_with_bad_commit--strict --strict=missingEmail=ignore
+ must_fail_arg=--strict
+ must_pass_arg=--strict=missingEmail=ignore
+ cd strict
+ cat pack-name
+test_expect_failgit index-pack --strict test-e4e1649155bf444fbd9cd85e376628d6eaf3d3bd.pack ./t5300-pack-object.sh: 468: eval:test_expect_fail: not found
+ cat pack-name
+ git index-pack --strict=missingEmail=ignore test-e4e1649155bf444fbd9cd85e376628d6eaf3d3bd.packe4e1649155bf444fbd9cd85e376628d6eaf3d3bd
Quoted 4 lines
ok 34 - index-pack with --strict downgrading fsck msgsThe missing command should fail the test, but it doesn't, because the &&-chain is broken on this line as well.
yes will need to fix this as well
thanks
John