mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
Merge branch 'jc/doc-fsck-msgids'
Add documentation for message IDs in fsck error messages. * jc/doc-fsck-msgids: Documentation: add lint-fsck-msgids fsck: document msg-id fsck: remove the unused MISSING_TREE_OBJECT fsck: remove the unused BAD_TAG_OBJECT
This commit is contained in:
commit
1e230dfd6c
|
@ -476,8 +476,19 @@ $(LINT_DOCS_MAN_SECTION_ORDER): .build/lint-docs/man-section-order/%.ok: %.txt
|
||||||
.PHONY: lint-docs-man-section-order
|
.PHONY: lint-docs-man-section-order
|
||||||
lint-docs-man-section-order: $(LINT_DOCS_MAN_SECTION_ORDER)
|
lint-docs-man-section-order: $(LINT_DOCS_MAN_SECTION_ORDER)
|
||||||
|
|
||||||
|
.PHONY: lint-docs-fsck-msgids
|
||||||
|
LINT_DOCS_FSCK_MSGIDS = .build/lint-docs/fsck-msgids.ok
|
||||||
|
$(LINT_DOCS_FSCK_MSGIDS): lint-fsck-msgids.perl
|
||||||
|
$(LINT_DOCS_FSCK_MSGIDS): ../fsck.h fsck-msgids.txt
|
||||||
|
$(call mkdir_p_parent_template)
|
||||||
|
$(QUIET_GEN)$(PERL_PATH) lint-fsck-msgids.perl \
|
||||||
|
../fsck.h fsck-msgids.txt $@
|
||||||
|
|
||||||
|
lint-docs-fsck-msgids: $(LINT_DOCS_FSCK_MSGIDS)
|
||||||
|
|
||||||
## Lint: list of targets above
|
## Lint: list of targets above
|
||||||
.PHONY: lint-docs
|
.PHONY: lint-docs
|
||||||
|
lint-docs: lint-docs-fsck-msgids
|
||||||
lint-docs: lint-docs-gitlink
|
lint-docs: lint-docs-gitlink
|
||||||
lint-docs: lint-docs-man-end-blurb
|
lint-docs: lint-docs-man-end-blurb
|
||||||
lint-docs: lint-docs-man-section-order
|
lint-docs: lint-docs-man-section-order
|
||||||
|
|
|
@ -35,6 +35,10 @@ allow new instances of the same breakages go unnoticed.
|
||||||
Setting an unknown `fsck.<msg-id>` value will cause fsck to die, but
|
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>`
|
doing the same for `receive.fsck.<msg-id>` and `fetch.fsck.<msg-id>`
|
||||||
will only cause git to warn.
|
will only cause git to warn.
|
||||||
|
+
|
||||||
|
See `Fsck Messages` section of linkgit:git-fsck[1] for supported
|
||||||
|
values of `<msg-id>`.
|
||||||
|
|
||||||
|
|
||||||
fsck.skipList::
|
fsck.skipList::
|
||||||
The path to a list of object names (i.e. one unabbreviated SHA-1 per
|
The path to a list of object names (i.e. one unabbreviated SHA-1 per
|
||||||
|
|
161
Documentation/fsck-msgids.txt
Normal file
161
Documentation/fsck-msgids.txt
Normal file
|
@ -0,0 +1,161 @@
|
||||||
|
`badDate`::
|
||||||
|
(ERROR) Invalid date format in an author/committer line.
|
||||||
|
|
||||||
|
`badDateOverflow`::
|
||||||
|
(ERROR) Invalid date value in an author/committer line.
|
||||||
|
|
||||||
|
`badEmail`::
|
||||||
|
(ERROR) Invalid email format in an author/committer line.
|
||||||
|
|
||||||
|
`badFilemode`::
|
||||||
|
(INFO) A tree contains a bad filemode entry.
|
||||||
|
|
||||||
|
`badName`::
|
||||||
|
(ERROR) An author/committer name is empty.
|
||||||
|
|
||||||
|
`badObjectSha1`::
|
||||||
|
(ERROR) An object has a bad sha1.
|
||||||
|
|
||||||
|
`badParentSha1`::
|
||||||
|
(ERROR) A commit object has a bad parent sha1.
|
||||||
|
|
||||||
|
`badTagName`::
|
||||||
|
(INFO) A tag has an invalid format.
|
||||||
|
|
||||||
|
`badTimezone`::
|
||||||
|
(ERROR) Found an invalid time zone in an author/committer line.
|
||||||
|
|
||||||
|
`badTree`::
|
||||||
|
(ERROR) A tree cannot be parsed.
|
||||||
|
|
||||||
|
`badTreeSha1`::
|
||||||
|
(ERROR) A tree has an invalid format.
|
||||||
|
|
||||||
|
`badType`::
|
||||||
|
(ERROR) Found an invalid object type.
|
||||||
|
|
||||||
|
`duplicateEntries`::
|
||||||
|
(ERROR) A tree contains duplicate file entries.
|
||||||
|
|
||||||
|
`emptyName`::
|
||||||
|
(WARN) A path contains an empty name.
|
||||||
|
|
||||||
|
`extraHeaderEntry`::
|
||||||
|
(IGNORE) Extra headers found after `tagger`.
|
||||||
|
|
||||||
|
`fullPathname`::
|
||||||
|
(WARN) A path contains the full path starting with "/".
|
||||||
|
|
||||||
|
`gitattributesSymlink`::
|
||||||
|
(INFO) `.gitattributes` is a symlink.
|
||||||
|
|
||||||
|
`gitignoreSymlink`::
|
||||||
|
(INFO) `.gitignore` is a symlink.
|
||||||
|
|
||||||
|
`gitmodulesBlob`::
|
||||||
|
(ERROR) A non-blob found at `.gitmodules`.
|
||||||
|
|
||||||
|
`gitmodulesLarge`::
|
||||||
|
(ERROR) The `.gitmodules` file is too large to parse.
|
||||||
|
|
||||||
|
`gitmodulesMissing`::
|
||||||
|
(ERROR) Unable to read `.gitmodules` blob.
|
||||||
|
|
||||||
|
`gitmodulesName`::
|
||||||
|
(ERROR) A submodule name is invalid.
|
||||||
|
|
||||||
|
`gitmodulesParse`::
|
||||||
|
(INFO) Could not parse `.gitmodules` blob.
|
||||||
|
|
||||||
|
`gitmodulesLarge`;
|
||||||
|
(ERROR) `.gitmodules` blob is too large to parse.
|
||||||
|
|
||||||
|
`gitmodulesPath`::
|
||||||
|
(ERROR) `.gitmodules` path is invalid.
|
||||||
|
|
||||||
|
`gitmodulesSymlink`::
|
||||||
|
(ERROR) `.gitmodules` is a symlink.
|
||||||
|
|
||||||
|
`gitmodulesUpdate`::
|
||||||
|
(ERROR) Found an invalid submodule update setting.
|
||||||
|
|
||||||
|
`gitmodulesUrl`::
|
||||||
|
(ERROR) Found an invalid submodule url.
|
||||||
|
|
||||||
|
`hasDot`::
|
||||||
|
(WARN) A tree contains an entry named `.`.
|
||||||
|
|
||||||
|
`hasDotdot`::
|
||||||
|
(WARN) A tree contains an entry named `..`.
|
||||||
|
|
||||||
|
`hasDotgit`::
|
||||||
|
(WARN) A tree contains an entry named `.git`.
|
||||||
|
|
||||||
|
`mailmapSymlink`::
|
||||||
|
(INFO) `.mailmap` is a symlink.
|
||||||
|
|
||||||
|
`missingAuthor`::
|
||||||
|
(ERROR) Author is missing.
|
||||||
|
|
||||||
|
`missingCommitter`::
|
||||||
|
(ERROR) Committer is missing.
|
||||||
|
|
||||||
|
`missingEmail`::
|
||||||
|
(ERROR) Email is missing in an author/committer line.
|
||||||
|
|
||||||
|
`missingNameBeforeEmail`::
|
||||||
|
(ERROR) Missing name before an email in an author/committer line.
|
||||||
|
|
||||||
|
`missingObject`::
|
||||||
|
(ERROR) Missing `object` line in tag object.
|
||||||
|
|
||||||
|
`missingSpaceBeforeDate`::
|
||||||
|
(ERROR) Missing space before date in an author/committer line.
|
||||||
|
|
||||||
|
`missingSpaceBeforeEmail`::
|
||||||
|
(ERROR) Missing space before the email in author/committer line.
|
||||||
|
|
||||||
|
`missingTag`::
|
||||||
|
(ERROR) Unexpected end after `type` line in a tag object.
|
||||||
|
|
||||||
|
`missingTagEntry`::
|
||||||
|
(ERROR) Missing `tag` line in a tag object.
|
||||||
|
|
||||||
|
`missingTaggerEntry`::
|
||||||
|
(INFO) Missing `tagger` line in a tag object.
|
||||||
|
|
||||||
|
`missingTree`::
|
||||||
|
(ERROR) Missing `tree` line in a commit object.
|
||||||
|
|
||||||
|
`missingType`::
|
||||||
|
(ERROR) Invalid type value on the `type` line in a tag object.
|
||||||
|
|
||||||
|
`missingTypeEntry`::
|
||||||
|
(ERROR) Missing `type` line in a tag object.
|
||||||
|
|
||||||
|
`multipleAuthors`::
|
||||||
|
(ERROR) Multiple author lines found in a commit.
|
||||||
|
|
||||||
|
`nulInCommit`::
|
||||||
|
(WARN) Found a NUL byte in the commit object body.
|
||||||
|
|
||||||
|
`nulInHeader`::
|
||||||
|
(FATAL) NUL byte exists in the object header.
|
||||||
|
|
||||||
|
`nullSha1`::
|
||||||
|
(WARN) Tree contains entries pointing to a null sha1.
|
||||||
|
|
||||||
|
`treeNotSorted`::
|
||||||
|
(ERROR) A tree is not properly sorted.
|
||||||
|
|
||||||
|
`unknownType`::
|
||||||
|
(ERROR) Found an unknown object type.
|
||||||
|
|
||||||
|
`unterminatedHeader`::
|
||||||
|
(FATAL) Missing end-of-line in the object header.
|
||||||
|
|
||||||
|
`zeroPaddedDate`::
|
||||||
|
(ERROR) Found a zero padded date in an author/commiter line.
|
||||||
|
|
||||||
|
`zeroPaddedFilemode`::
|
||||||
|
(WARN) Found a zero padded filemode in a tree.
|
|
@ -152,6 +152,18 @@ hash mismatch <object>::
|
||||||
object database value.
|
object database value.
|
||||||
This indicates a serious data integrity problem.
|
This indicates a serious data integrity problem.
|
||||||
|
|
||||||
|
|
||||||
|
FSCK MESSAGES
|
||||||
|
-------------
|
||||||
|
|
||||||
|
The following lists the types of errors `git fsck` detects and what
|
||||||
|
each error means, with their default severity. The severity of the
|
||||||
|
error, other than those that are marked as "(FATAL)", can be tweaked
|
||||||
|
by setting the corresponding `fsck.<msg-id>` configuration variable.
|
||||||
|
|
||||||
|
include::fsck-msgids.txt[]
|
||||||
|
|
||||||
|
|
||||||
Environment Variables
|
Environment Variables
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
|
70
Documentation/lint-fsck-msgids.perl
Executable file
70
Documentation/lint-fsck-msgids.perl
Executable file
|
@ -0,0 +1,70 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
my ($fsck_h, $fsck_msgids_txt, $okfile) = @ARGV;
|
||||||
|
|
||||||
|
my (%in_fsck_h, $fh, $bad);
|
||||||
|
|
||||||
|
open($fh, "<", "$fsck_h") or die;
|
||||||
|
while (<$fh>) {
|
||||||
|
if (/^\s+FUNC\(([0-9A-Z_]+), ([A-Z]+)\)/) {
|
||||||
|
my ($name, $severity) = ($1, $2);
|
||||||
|
my ($first) = 1;
|
||||||
|
$name = join('',
|
||||||
|
map {
|
||||||
|
y/A-Z/a-z/;
|
||||||
|
if (!$first) {
|
||||||
|
s/^(.)/uc($1)/e;
|
||||||
|
} else {
|
||||||
|
$first = 0;
|
||||||
|
}
|
||||||
|
$_;
|
||||||
|
}
|
||||||
|
split(/_/, $name));
|
||||||
|
$in_fsck_h{$name} = $severity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close($fh);
|
||||||
|
|
||||||
|
open($fh, "<", "$fsck_msgids_txt") or die;
|
||||||
|
my ($previous, $current);
|
||||||
|
while (<$fh>) {
|
||||||
|
if (!defined $current) {
|
||||||
|
if (/^\`([a-zA-Z0-9]*)\`::/) {
|
||||||
|
$current = $1;
|
||||||
|
if ((defined $previous) &&
|
||||||
|
($current le $previous)) {
|
||||||
|
print STDERR "$previous >= $current in doc\n";
|
||||||
|
$bad = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elsif (/^\s+\(([A-Z]+)\) /) {
|
||||||
|
my ($level) = $1;
|
||||||
|
if (!exists $in_fsck_h{$current}) {
|
||||||
|
print STDERR "$current does not exist in fsck.h\n";
|
||||||
|
$bad = 1;
|
||||||
|
} elsif ($in_fsck_h{$current} eq "") {
|
||||||
|
print STDERR "$current defined twice\n";
|
||||||
|
$bad = 1;
|
||||||
|
} elsif ($in_fsck_h{$current} ne $level) {
|
||||||
|
print STDERR "$current severity $level != $in_fsck_h{$current}\n";
|
||||||
|
$bad = 1;
|
||||||
|
}
|
||||||
|
$previous = $current;
|
||||||
|
$in_fsck_h{$current} = ""; # mark as seen.
|
||||||
|
undef $current;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close($fh);
|
||||||
|
|
||||||
|
for my $key (keys %in_fsck_h) {
|
||||||
|
if ($in_fsck_h{$key} ne "") {
|
||||||
|
print STDERR "$key not explained in doc.\n";
|
||||||
|
$bad = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
die if ($bad);
|
||||||
|
|
||||||
|
open($fh, ">", "$okfile");
|
||||||
|
print $fh "good\n";
|
||||||
|
close($fh);
|
8
fsck.h
8
fsck.h
|
@ -13,6 +13,12 @@ enum fsck_msg_type {
|
||||||
FSCK_WARN,
|
FSCK_WARN,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Documentation/fsck-msgids.txt documents these; when
|
||||||
|
* modifying this list in any way, make sure to keep the
|
||||||
|
* two in sync.
|
||||||
|
*/
|
||||||
|
|
||||||
#define FOREACH_FSCK_MSG_ID(FUNC) \
|
#define FOREACH_FSCK_MSG_ID(FUNC) \
|
||||||
/* fatal errors */ \
|
/* fatal errors */ \
|
||||||
FUNC(NUL_IN_HEADER, FATAL) \
|
FUNC(NUL_IN_HEADER, FATAL) \
|
||||||
|
@ -24,7 +30,6 @@ enum fsck_msg_type {
|
||||||
FUNC(BAD_NAME, ERROR) \
|
FUNC(BAD_NAME, ERROR) \
|
||||||
FUNC(BAD_OBJECT_SHA1, ERROR) \
|
FUNC(BAD_OBJECT_SHA1, ERROR) \
|
||||||
FUNC(BAD_PARENT_SHA1, ERROR) \
|
FUNC(BAD_PARENT_SHA1, ERROR) \
|
||||||
FUNC(BAD_TAG_OBJECT, ERROR) \
|
|
||||||
FUNC(BAD_TIMEZONE, ERROR) \
|
FUNC(BAD_TIMEZONE, ERROR) \
|
||||||
FUNC(BAD_TREE, ERROR) \
|
FUNC(BAD_TREE, ERROR) \
|
||||||
FUNC(BAD_TREE_SHA1, ERROR) \
|
FUNC(BAD_TREE_SHA1, ERROR) \
|
||||||
|
@ -40,7 +45,6 @@ enum fsck_msg_type {
|
||||||
FUNC(MISSING_TAG, ERROR) \
|
FUNC(MISSING_TAG, ERROR) \
|
||||||
FUNC(MISSING_TAG_ENTRY, ERROR) \
|
FUNC(MISSING_TAG_ENTRY, ERROR) \
|
||||||
FUNC(MISSING_TREE, ERROR) \
|
FUNC(MISSING_TREE, ERROR) \
|
||||||
FUNC(MISSING_TREE_OBJECT, ERROR) \
|
|
||||||
FUNC(MISSING_TYPE, ERROR) \
|
FUNC(MISSING_TYPE, ERROR) \
|
||||||
FUNC(MISSING_TYPE_ENTRY, ERROR) \
|
FUNC(MISSING_TYPE_ENTRY, ERROR) \
|
||||||
FUNC(MULTIPLE_AUTHORS, ERROR) \
|
FUNC(MULTIPLE_AUTHORS, ERROR) \
|
||||||
|
|
Loading…
Reference in a new issue