Autogenerated HTML docs for v1.3.2-gfd60a
[git.git] / git-fsck-objects.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
2     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
4 <head>\r
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
6 <meta name="generator" content="AsciiDoc 7.0.2" />\r
7 <style type="text/css">\r
8 /* Debug borders */\r
9 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
10 /*\r
11   border: 1px solid red;\r
12 */\r
13 }\r
14 \r
15 body {\r
16   margin: 1em 5% 1em 5%;\r
17 }\r
18 \r
19 a { color: blue; }\r
20 a:visited { color: fuchsia; }\r
21 \r
22 em {\r
23   font-style: italic;\r
24 }\r
25 \r
26 strong {\r
27   font-weight: bold;\r
28 }\r
29 \r
30 tt {\r
31   color: navy;\r
32 }\r
33 \r
34 h1, h2, h3, h4, h5, h6 {\r
35   color: #527bbd;\r
36   font-family: sans-serif;\r
37   margin-top: 1.2em;\r
38   margin-bottom: 0.5em;\r
39   line-height: 1.3;\r
40 }\r
41 \r
42 h1 {\r
43   border-bottom: 2px solid silver;\r
44 }\r
45 h2 {\r
46   border-bottom: 2px solid silver;\r
47   padding-top: 0.5em;\r
48 }\r
49 \r
50 div.sectionbody {\r
51   font-family: serif;\r
52   margin-left: 0;\r
53 }\r
54 \r
55 hr {\r
56   border: 1px solid silver;\r
57 }\r
58 \r
59 p {\r
60   margin-top: 0.5em;\r
61   margin-bottom: 0.5em;\r
62 }\r
63 \r
64 pre {\r
65   padding: 0;\r
66   margin: 0;\r
67 }\r
68 \r
69 span#author {\r
70   color: #527bbd;\r
71   font-family: sans-serif;\r
72   font-weight: bold;\r
73   font-size: 1.2em;\r
74 }\r
75 span#email {\r
76 }\r
77 span#revision {\r
78   font-family: sans-serif;\r
79 }\r
80 \r
81 div#footer {\r
82   font-family: sans-serif;\r
83   font-size: small;\r
84   border-top: 2px solid silver;\r
85   padding-top: 0.5em;\r
86   margin-top: 4.0em;\r
87 }\r
88 div#footer-text {\r
89   float: left;\r
90   padding-bottom: 0.5em;\r
91 }\r
92 div#footer-badges {\r
93   float: right;\r
94   padding-bottom: 0.5em;\r
95 }\r
96 \r
97 div#preamble,\r
98 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
99 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
100 div.admonitionblock {\r
101   margin-right: 10%;\r
102   margin-top: 1.5em;\r
103   margin-bottom: 1.5em;\r
104 }\r
105 div.admonitionblock {\r
106   margin-top: 2.5em;\r
107   margin-bottom: 2.5em;\r
108 }\r
109 \r
110 div.content { /* Block element content. */\r
111   padding: 0;\r
112 }\r
113 \r
114 /* Block element titles. */\r
115 div.title, caption.title {\r
116   font-family: sans-serif;\r
117   font-weight: bold;\r
118   text-align: left;\r
119   margin-top: 1.0em;\r
120   margin-bottom: 0.5em;\r
121 }\r
122 div.title + * {\r
123   margin-top: 0;\r
124 }\r
125 \r
126 td div.title:first-child {\r
127   margin-top: 0.0em;\r
128 }\r
129 div.content div.title:first-child {\r
130   margin-top: 0.0em;\r
131 }\r
132 div.content + div.title {\r
133   margin-top: 0.0em;\r
134 }\r
135 \r
136 div.sidebarblock > div.content {\r
137   background: #ffffee;\r
138   border: 1px solid silver;\r
139   padding: 0.5em;\r
140 }\r
141 \r
142 div.listingblock > div.content {\r
143   border: 1px solid silver;\r
144   background: #f4f4f4;\r
145   padding: 0.5em;\r
146 }\r
147 \r
148 div.quoteblock > div.content {\r
149   padding-left: 2.0em;\r
150 }\r
151 div.quoteblock .attribution {\r
152   text-align: right;\r
153 }\r
154 \r
155 div.admonitionblock .icon {\r
156   vertical-align: top;\r
157   font-size: 1.1em;\r
158   font-weight: bold;\r
159   text-decoration: underline;\r
160   color: #527bbd;\r
161   padding-right: 0.5em;\r
162 }\r
163 div.admonitionblock td.content {\r
164   padding-left: 0.5em;\r
165   border-left: 2px solid silver;\r
166 }\r
167 \r
168 div.exampleblock > div.content {\r
169   border-left: 2px solid silver;\r
170   padding: 0.5em;\r
171 }\r
172 \r
173 div.verseblock div.content {\r
174   white-space: pre;\r
175 }\r
176 \r
177 div.imageblock div.content { padding-left: 0; }\r
178 div.imageblock img { border: 1px solid silver; }\r
179 span.image img { border-style: none; }\r
180 \r
181 dl {\r
182   margin-top: 0.8em;\r
183   margin-bottom: 0.8em;\r
184 }\r
185 dt {\r
186   margin-top: 0.5em;\r
187   margin-bottom: 0;\r
188   font-style: italic;\r
189 }\r
190 dd > *:first-child {\r
191   margin-top: 0;\r
192 }\r
193 \r
194 ul, ol {\r
195     list-style-position: outside;\r
196 }\r
197 ol.olist2 {\r
198   list-style-type: lower-alpha;\r
199 }\r
200 \r
201 div.tableblock > table {\r
202   border-color: #527bbd;\r
203   border-width: 3px;\r
204 }\r
205 thead {\r
206   font-family: sans-serif;\r
207   font-weight: bold;\r
208 }\r
209 tfoot {\r
210   font-weight: bold;\r
211 }\r
212 \r
213 div.hlist {\r
214   margin-top: 0.8em;\r
215   margin-bottom: 0.8em;\r
216 }\r
217 td.hlist1 {\r
218   vertical-align: top;\r
219   font-style: italic;\r
220   padding-right: 0.8em;\r
221 }\r
222 td.hlist2 {\r
223   vertical-align: top;\r
224 }\r
225 \r
226 @media print {\r
227   div#footer-badges { display: none; }\r
228 }\r
229 include::./stylesheets/xhtml11-manpage.css[]\r
230 /* Workarounds for IE6's broken and incomplete CSS2. */\r
231 \r
232 div.sidebar-content {\r
233   background: #ffffee;\r
234   border: 1px solid silver;\r
235   padding: 0.5em;\r
236 }\r
237 div.sidebar-title, div.image-title {\r
238   font-family: sans-serif;\r
239   font-weight: bold;\r
240   margin-top: 0.0em;\r
241   margin-bottom: 0.5em;\r
242 }\r
243 \r
244 div.listingblock div.content {\r
245   border: 1px solid silver;\r
246   background: #f4f4f4;\r
247   padding: 0.5em;\r
248 }\r
249 \r
250 div.quoteblock-content {\r
251   padding-left: 2.0em;\r
252 }\r
253 \r
254 div.exampleblock-content {\r
255   border-left: 2px solid silver;\r
256   padding-left: 0.5em;\r
257 }\r
258 </style>\r
259 <title>git-fsck-objects(1)</title>\r
260 </head>\r
261 <body>\r
262 <div id="header">\r
263 <h1>\r
264 git-fsck-objects(1) Manual Page\r
265 </h1>\r
266 <h2>NAME</h2>\r
267 <div class="sectionbody">\r
268 <p>git-fsck-objects -\r
269    Verifies the connectivity and validity of the objects in the database\r
270 </p>\r
271 </div>\r
272 </div>\r
273 <h2>SYNOPSIS</h2>\r
274 <div class="sectionbody">\r
275 <div class="verseblock">\r
276 <div class="content"><em>git-fsck-objects</em> [--tags] [--root] [--unreachable] [--cache]\r
277                  [--full] [--strict] [&lt;object&gt;*]</div></div>\r
278 </div>\r
279 <h2>DESCRIPTION</h2>\r
280 <div class="sectionbody">\r
281 <p>Verifies the connectivity and validity of the objects in the database.</p>\r
282 </div>\r
283 <h2>OPTIONS</h2>\r
284 <div class="sectionbody">\r
285 <dl>\r
286 <dt>\r
287 &lt;object&gt;\r
288 </dt>\r
289 <dd>\r
290 <p>\r
291         An object to treat as the head of an unreachability trace.\r
292 </p>\r
293 <p>If no objects are given, git-fsck-objects defaults to using the\r
294 index file and all SHA1 references in .git/refs/* as heads.</p>\r
295 </dd>\r
296 <dt>\r
297 --unreachable\r
298 </dt>\r
299 <dd>\r
300 <p>\r
301         Print out objects that exist but that aren't readable from any\r
302         of the reference nodes.\r
303 </p>\r
304 </dd>\r
305 <dt>\r
306 --root\r
307 </dt>\r
308 <dd>\r
309 <p>\r
310         Report root nodes.\r
311 </p>\r
312 </dd>\r
313 <dt>\r
314 --tags\r
315 </dt>\r
316 <dd>\r
317 <p>\r
318         Report tags.\r
319 </p>\r
320 </dd>\r
321 <dt>\r
322 --cache\r
323 </dt>\r
324 <dd>\r
325 <p>\r
326         Consider any object recorded in the index also as a head node for\r
327         an unreachability trace.\r
328 </p>\r
329 </dd>\r
330 <dt>\r
331 --full\r
332 </dt>\r
333 <dd>\r
334 <p>\r
335         Check not just objects in GIT_OBJECT_DIRECTORY\r
336         ($GIT_DIR/objects), but also the ones found in alternate\r
337         object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES\r
338         or $GIT_DIR/objects/info/alternates,\r
339         and in packed git archives found in $GIT_DIR/objects/pack\r
340         and corresponding pack subdirectories in alternate\r
341         object pools.\r
342 </p>\r
343 </dd>\r
344 <dt>\r
345 --strict\r
346 </dt>\r
347 <dd>\r
348 <p>\r
349         Enable more strict checking, namely to catch a file mode\r
350         recorded with g+w bit set, which was created by older\r
351         versions of git.  Existing repositories, including the\r
352         Linux kernel, git itself, and sparse repository have old\r
353         objects that triggers this check, but it is recommended\r
354         to check new projects with this flag.\r
355 </p>\r
356 </dd>\r
357 </dl>\r
358 <p>It tests SHA1 and general object sanity, and it does full tracking of\r
359 the resulting reachability and everything else. It prints out any\r
360 corruption it finds (missing or bad objects), and if you use the\r
361 <em>--unreachable</em> flag it will also print out objects that exist but\r
362 that aren't readable from any of the specified head nodes.</p>\r
363 <p>So for example</p>\r
364 <div class="literalblock">\r
365 <div class="content">\r
366 <pre><tt>git-fsck-objects --unreachable HEAD $(cat .git/refs/heads/*)</tt></pre>\r
367 </div></div>\r
368 <p>will do quite a _lot_ of verification on the tree. There are a few\r
369 extra validity tests to be added (make sure that tree objects are\r
370 sorted properly etc), but on the whole if "git-fsck-objects" is happy, you\r
371 do have a valid tree.</p>\r
372 <p>Any corrupt objects you will have to find in backups or other archives\r
373 (ie you can just remove them and do an "rsync" with some other site in\r
374 the hopes that somebody else has the object you have corrupted).</p>\r
375 <p>Of course, "valid tree" doesn't mean that it wasn't generated by some\r
376 evil person, and the end result might be crap. git is a revision\r
377 tracking system, not a quality assurance system ;)</p>\r
378 </div>\r
379 <h2>Extracted Diagnostics</h2>\r
380 <div class="sectionbody">\r
381 <dl>\r
382 <dt>\r
383 expect dangling commits - potential heads - due to lack of head information\r
384 </dt>\r
385 <dd>\r
386 <p>\r
387         You haven't specified any nodes as heads so it won't be\r
388         possible to differentiate between un-parented commits and\r
389         root nodes.\r
390 </p>\r
391 </dd>\r
392 <dt>\r
393 missing sha1 directory <em>&lt;dir&gt;</em>\r
394 </dt>\r
395 <dd>\r
396 <p>\r
397         The directory holding the sha1 objects is missing.\r
398 </p>\r
399 </dd>\r
400 <dt>\r
401 unreachable &lt;type&gt; &lt;object&gt;\r
402 </dt>\r
403 <dd>\r
404 <p>\r
405         The &lt;type&gt; object &lt;object&gt;, isn't actually referred to directly\r
406         or indirectly in any of the trees or commits seen. This can\r
407         mean that there's another root node that you're not specifying\r
408         or that the tree is corrupt. If you haven't missed a root node\r
409         then you might as well delete unreachable nodes since they\r
410         can't be used.\r
411 </p>\r
412 </dd>\r
413 <dt>\r
414 missing &lt;type&gt; &lt;object&gt;\r
415 </dt>\r
416 <dd>\r
417 <p>\r
418         The &lt;type&gt; object &lt;object&gt;, is referred to but isn't present in\r
419         the database.\r
420 </p>\r
421 </dd>\r
422 <dt>\r
423 dangling &lt;type&gt; &lt;object&gt;\r
424 </dt>\r
425 <dd>\r
426 <p>\r
427         The &lt;type&gt; object &lt;object&gt;, is present in the database but never\r
428         <em>directly</em> used. A dangling commit could be a root node.\r
429 </p>\r
430 </dd>\r
431 <dt>\r
432 warning: git-fsck-objects: tree &lt;tree&gt; has full pathnames in it\r
433 </dt>\r
434 <dd>\r
435 <p>\r
436         And it shouldn't&#8230;\r
437 </p>\r
438 </dd>\r
439 <dt>\r
440 sha1 mismatch &lt;object&gt;\r
441 </dt>\r
442 <dd>\r
443 <p>\r
444         The database has an object who's sha1 doesn't match the\r
445         database value.\r
446         This indicates a serious data integrity problem.\r
447 </p>\r
448 </dd>\r
449 </dl>\r
450 </div>\r
451 <h2>Environment Variables</h2>\r
452 <div class="sectionbody">\r
453 <dl>\r
454 <dt>\r
455 GIT_OBJECT_DIRECTORY\r
456 </dt>\r
457 <dd>\r
458 <p>\r
459         used to specify the object database root (usually $GIT_DIR/objects)\r
460 </p>\r
461 </dd>\r
462 <dt>\r
463 GIT_INDEX_FILE\r
464 </dt>\r
465 <dd>\r
466 <p>\r
467         used to specify the index file of the index\r
468 </p>\r
469 </dd>\r
470 <dt>\r
471 GIT_ALTERNATE_OBJECT_DIRECTORIES\r
472 </dt>\r
473 <dd>\r
474 <p>\r
475         used to specify additional object database roots (usually unset)\r
476 </p>\r
477 </dd>\r
478 </dl>\r
479 </div>\r
480 <h2>Author</h2>\r
481 <div class="sectionbody">\r
482 <p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
483 </div>\r
484 <h2>Documentation</h2>\r
485 <div class="sectionbody">\r
486 <p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
487 </div>\r
488 <h2>GIT</h2>\r
489 <div class="sectionbody">\r
490 <p>Part of the <a href="git.html">git(7)</a> suite</p>\r
491 </div>\r
492 <div id="footer">\r
493 <div id="footer-text">\r
494 Last updated 13-Mar-2006 08:20:13 UTC\r
495 </div>\r
496 </div>\r
497 </body>\r
498 </html>\r