]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-fsck-objects.txt
Fix nasty approxidate bug
[thirdparty/git.git] / Documentation / git-fsck-objects.txt
CommitLineData
215a7ad1
JH
1git-fsck-objects(1)
2===================
2cf565c5
DG
3
4NAME
5----
215a7ad1 6git-fsck-objects - Verifies the connectivity and validity of the objects in the database
2cf565c5
DG
7
8
9SYNOPSIS
10--------
215a7ad1 11'git-fsck-objects' [--tags] [--root] [--unreachable] [--cache] [--standalone | --full] [--strict] [<object>*]
2cf565c5
DG
12
13DESCRIPTION
14-----------
15Verifies the connectivity and validity of the objects in the database.
16
17OPTIONS
18-------
19<object>::
20 An object to treat as the head of an unreachability trace.
df8baa42
JF
21+
22If no objects are given, git-fsck-objects defaults to using the
23index file and all SHA1 references in .git/refs/* as heads.
6f97a894 24
2cf565c5
DG
25--unreachable::
26 Print out objects that exist but that aren't readable from any
6f97a894 27 of the reference nodes.
2cf565c5
DG
28
29--root::
30 Report root nodes.
31
32--tags::
33 Report tags.
34
35--cache::
5f3aa197 36 Consider any object recorded in the index also as a head node for
2cf565c5
DG
37 an unreachability trace.
38
8a498a05
JH
39--standalone::
40 Limit checks to the contents of GIT_OBJECT_DIRECTORY
2c6e4771 41 ($GIT_DIR/objects), making sure that it is consistent and
8a498a05
JH
42 complete without referring to objects found in alternate
43 object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES,
72e9340c 44 nor packed git archives found in $GIT_DIR/objects/pack;
8a498a05
JH
45 cannot be used with --full.
46
47--full::
48 Check not just objects in GIT_OBJECT_DIRECTORY
2c6e4771 49 ($GIT_DIR/objects), but also the ones found in alternate
8a498a05 50 object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES,
72e9340c 51 and in packed git archives found in $GIT_DIR/objects/pack
8a498a05
JH
52 and corresponding pack subdirectories in alternate
53 object pools; cannot be used with --standalone.
54
fb6a3d86
JH
55--strict::
56 Enable more strict checking, namely to catch a file mode
57 recorded with g+w bit set, which was created by older
72e9340c
CM
58 versions of git. Existing repositories, including the
59 Linux kernel, git itself, and sparse repository have old
fb6a3d86
JH
60 objects that triggers this check, but it is recommended
61 to check new projects with this flag.
62
2cf565c5
DG
63It tests SHA1 and general object sanity, and it does full tracking of
64the resulting reachability and everything else. It prints out any
65corruption it finds (missing or bad objects), and if you use the
66'--unreachable' flag it will also print out objects that exist but
67that aren't readable from any of the specified head nodes.
68
69So for example
70
27dedf0c 71 git-fsck-objects --unreachable HEAD $(cat .git/refs/heads/*)
2cf565c5
DG
72
73will do quite a _lot_ of verification on the tree. There are a few
74extra validity tests to be added (make sure that tree objects are
215a7ad1 75sorted properly etc), but on the whole if "git-fsck-objects" is happy, you
2cf565c5
DG
76do have a valid tree.
77
78Any corrupt objects you will have to find in backups or other archives
79(ie you can just remove them and do an "rsync" with some other site in
80the hopes that somebody else has the object you have corrupted).
81
82Of course, "valid tree" doesn't mean that it wasn't generated by some
72e9340c 83evil person, and the end result might be crap. git is a revision
2cf565c5
DG
84tracking system, not a quality assurance system ;)
85
86Extracted Diagnostics
87---------------------
88
89expect dangling commits - potential heads - due to lack of head information::
90 You haven't specified any nodes as heads so it won't be
91 possible to differentiate between un-parented commits and
92 root nodes.
93
94missing sha1 directory '<dir>'::
95 The directory holding the sha1 objects is missing.
96
97unreachable <type> <object>::
98 The <type> object <object>, isn't actually referred to directly
99 or indirectly in any of the trees or commits seen. This can
100 mean that there's another root node that you're not specifying
101 or that the tree is corrupt. If you haven't missed a root node
102 then you might as well delete unreachable nodes since they
103 can't be used.
104
105missing <type> <object>::
106 The <type> object <object>, is referred to but isn't present in
107 the database.
108
109dangling <type> <object>::
110 The <type> object <object>, is present in the database but never
111 'directly' used. A dangling commit could be a root node.
112
215a7ad1 113warning: git-fsck-objects: tree <tree> has full pathnames in it::
2cf565c5
DG
114 And it shouldn't...
115
116sha1 mismatch <object>::
117 The database has an object who's sha1 doesn't match the
118 database value.
119 This indicates a serious data integrity problem.
2cf565c5
DG
120
121Environment Variables
122---------------------
123
124GIT_OBJECT_DIRECTORY::
2c6e4771 125 used to specify the object database root (usually $GIT_DIR/objects)
2cf565c5
DG
126
127GIT_INDEX_FILE::
5f3aa197 128 used to specify the index file of the index
2cf565c5 129
df8baa42 130GIT_ALTERNATE_OBJECT_DIRECTORIES::
2c6e4771 131 used to specify additional object database roots (usually unset)
2cf565c5
DG
132
133Author
134------
135Written by Linus Torvalds <torvalds@osdl.org>
136
137Documentation
138--------------
139Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
140
141GIT
142---
a7154e91 143Part of the gitlink:git[7] suite
2cf565c5 144