Junio C Hamano
18 years ago
15 changed files with 159 additions and 140 deletions
@ -0,0 +1,139 @@
@@ -0,0 +1,139 @@
|
||||
git-fsck(1) |
||||
=========== |
||||
|
||||
NAME |
||||
---- |
||||
git-fsck - Verifies the connectivity and validity of the objects in the database |
||||
|
||||
|
||||
SYNOPSIS |
||||
-------- |
||||
[verse] |
||||
'git-fsck' [--tags] [--root] [--unreachable] [--cache] |
||||
[--full] [--strict] [<object>*] |
||||
|
||||
DESCRIPTION |
||||
----------- |
||||
Verifies the connectivity and validity of the objects in the database. |
||||
|
||||
OPTIONS |
||||
------- |
||||
<object>:: |
||||
An object to treat as the head of an unreachability trace. |
||||
+ |
||||
If no objects are given, git-fsck defaults to using the |
||||
index file and all SHA1 references in .git/refs/* as heads. |
||||
|
||||
--unreachable:: |
||||
Print out objects that exist but that aren't readable from any |
||||
of the reference nodes. |
||||
|
||||
--root:: |
||||
Report root nodes. |
||||
|
||||
--tags:: |
||||
Report tags. |
||||
|
||||
--cache:: |
||||
Consider any object recorded in the index also as a head node for |
||||
an unreachability trace. |
||||
|
||||
--full:: |
||||
Check not just objects in GIT_OBJECT_DIRECTORY |
||||
($GIT_DIR/objects), but also the ones found in alternate |
||||
object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES |
||||
or $GIT_DIR/objects/info/alternates, |
||||
and in packed git archives found in $GIT_DIR/objects/pack |
||||
and corresponding pack subdirectories in alternate |
||||
object pools. |
||||
|
||||
--strict:: |
||||
Enable more strict checking, namely to catch a file mode |
||||
recorded with g+w bit set, which was created by older |
||||
versions of git. Existing repositories, including the |
||||
Linux kernel, git itself, and sparse repository have old |
||||
objects that triggers this check, but it is recommended |
||||
to check new projects with this flag. |
||||
|
||||
It tests SHA1 and general object sanity, and it does full tracking of |
||||
the resulting reachability and everything else. It prints out any |
||||
corruption it finds (missing or bad objects), and if you use the |
||||
'--unreachable' flag it will also print out objects that exist but |
||||
that aren't readable from any of the specified head nodes. |
||||
|
||||
So for example |
||||
|
||||
git-fsck --unreachable HEAD $(cat .git/refs/heads/*) |
||||
|
||||
will do quite a _lot_ of verification on the tree. There are a few |
||||
extra validity tests to be added (make sure that tree objects are |
||||
sorted properly etc), but on the whole if "git-fsck" is happy, you |
||||
do have a valid tree. |
||||
|
||||
Any corrupt objects you will have to find in backups or other archives |
||||
(i.e., you can just remove them and do an "rsync" with some other site in |
||||
the hopes that somebody else has the object you have corrupted). |
||||
|
||||
Of course, "valid tree" doesn't mean that it wasn't generated by some |
||||
evil person, and the end result might be crap. git is a revision |
||||
tracking system, not a quality assurance system ;) |
||||
|
||||
Extracted Diagnostics |
||||
--------------------- |
||||
|
||||
expect dangling commits - potential heads - due to lack of head information:: |
||||
You haven't specified any nodes as heads so it won't be |
||||
possible to differentiate between un-parented commits and |
||||
root nodes. |
||||
|
||||
missing sha1 directory '<dir>':: |
||||
The directory holding the sha1 objects is missing. |
||||
|
||||
unreachable <type> <object>:: |
||||
The <type> object <object>, isn't actually referred to directly |
||||
or indirectly in any of the trees or commits seen. This can |
||||
mean that there's another root node that you're not specifying |
||||
or that the tree is corrupt. If you haven't missed a root node |
||||
then you might as well delete unreachable nodes since they |
||||
can't be used. |
||||
|
||||
missing <type> <object>:: |
||||
The <type> object <object>, is referred to but isn't present in |
||||
the database. |
||||
|
||||
dangling <type> <object>:: |
||||
The <type> object <object>, is present in the database but never |
||||
'directly' used. A dangling commit could be a root node. |
||||
|
||||
warning: git-fsck: tree <tree> has full pathnames in it:: |
||||
And it shouldn't... |
||||
|
||||
sha1 mismatch <object>:: |
||||
The database has an object who's sha1 doesn't match the |
||||
database value. |
||||
This indicates a serious data integrity problem. |
||||
|
||||
Environment Variables |
||||
--------------------- |
||||
|
||||
GIT_OBJECT_DIRECTORY:: |
||||
used to specify the object database root (usually $GIT_DIR/objects) |
||||
|
||||
GIT_INDEX_FILE:: |
||||
used to specify the index file of the index |
||||
|
||||
GIT_ALTERNATE_OBJECT_DIRECTORIES:: |
||||
used to specify additional object database roots (usually unset) |
||||
|
||||
Author |
||||
------ |
||||
Written by Linus Torvalds <torvalds@osdl.org> |
||||
|
||||
Documentation |
||||
-------------- |
||||
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. |
||||
|
||||
GIT |
||||
--- |
||||
Part of the gitlink:git[7] suite |
||||
|
Loading…
Reference in new issue