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