Autogenerated HTML docs for v1.2.4-gf067
[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.1" />\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                  [--standalone | --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 --standalone\r
332 </dt>\r
333 <dd>\r
334 <p>\r
335         Limit checks to the contents of GIT_OBJECT_DIRECTORY\r
336         ($GIT_DIR/objects), making sure that it is consistent and\r
337         complete without referring to objects found in alternate\r
338         object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES,\r
339         nor packed git archives found in $GIT_DIR/objects/pack;\r
340         cannot be used with --full.\r
341 </p>\r
342 </dd>\r
343 <dt>\r
344 --full\r
345 </dt>\r
346 <dd>\r
347 <p>\r
348         Check not just objects in GIT_OBJECT_DIRECTORY\r
349         ($GIT_DIR/objects), but also the ones found in alternate\r
350         object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES,\r
351         and in packed git archives found in $GIT_DIR/objects/pack\r
352         and corresponding pack subdirectories in alternate\r
353         object pools; cannot be used with --standalone.\r
354 </p>\r
355 </dd>\r
356 <dt>\r
357 --strict\r
358 </dt>\r
359 <dd>\r
360 <p>\r
361         Enable more strict checking, namely to catch a file mode\r
362         recorded with g+w bit set, which was created by older\r
363         versions of git.  Existing repositories, including the\r
364         Linux kernel, git itself, and sparse repository have old\r
365         objects that triggers this check, but it is recommended\r
366         to check new projects with this flag.\r
367 </p>\r
368 </dd>\r
369 </dl>\r
370 <p>It tests SHA1 and general object sanity, and it does full tracking of\r
371 the resulting reachability and everything else. It prints out any\r
372 corruption it finds (missing or bad objects), and if you use the\r
373 <em>--unreachable</em> flag it will also print out objects that exist but\r
374 that aren't readable from any of the specified head nodes.</p>\r
375 <p>So for example</p>\r
376 <div class="literalblock">\r
377 <div class="content">\r
378 <pre><tt>git-fsck-objects --unreachable HEAD $(cat .git/refs/heads/*)</tt></pre>\r
379 </div></div>\r
380 <p>will do quite a _lot_ of verification on the tree. There are a few\r
381 extra validity tests to be added (make sure that tree objects are\r
382 sorted properly etc), but on the whole if "git-fsck-objects" is happy, you\r
383 do have a valid tree.</p>\r
384 <p>Any corrupt objects you will have to find in backups or other archives\r
385 (ie you can just remove them and do an "rsync" with some other site in\r
386 the hopes that somebody else has the object you have corrupted).</p>\r
387 <p>Of course, "valid tree" doesn't mean that it wasn't generated by some\r
388 evil person, and the end result might be crap. git is a revision\r
389 tracking system, not a quality assurance system ;)</p>\r
390 </div>\r
391 <h2>Extracted Diagnostics</h2>\r
392 <div class="sectionbody">\r
393 <dl>\r
394 <dt>\r
395 expect dangling commits - potential heads - due to lack of head information\r
396 </dt>\r
397 <dd>\r
398 <p>\r
399         You haven't specified any nodes as heads so it won't be\r
400         possible to differentiate between un-parented commits and\r
401         root nodes.\r
402 </p>\r
403 </dd>\r
404 <dt>\r
405 missing sha1 directory <em>&lt;dir&gt;</em>\r
406 </dt>\r
407 <dd>\r
408 <p>\r
409         The directory holding the sha1 objects is missing.\r
410 </p>\r
411 </dd>\r
412 <dt>\r
413 unreachable &lt;type&gt; &lt;object&gt;\r
414 </dt>\r
415 <dd>\r
416 <p>\r
417         The &lt;type&gt; object &lt;object&gt;, isn't actually referred to directly\r
418         or indirectly in any of the trees or commits seen. This can\r
419         mean that there's another root node that you're not specifying\r
420         or that the tree is corrupt. If you haven't missed a root node\r
421         then you might as well delete unreachable nodes since they\r
422         can't be used.\r
423 </p>\r
424 </dd>\r
425 <dt>\r
426 missing &lt;type&gt; &lt;object&gt;\r
427 </dt>\r
428 <dd>\r
429 <p>\r
430         The &lt;type&gt; object &lt;object&gt;, is referred to but isn't present in\r
431         the database.\r
432 </p>\r
433 </dd>\r
434 <dt>\r
435 dangling &lt;type&gt; &lt;object&gt;\r
436 </dt>\r
437 <dd>\r
438 <p>\r
439         The &lt;type&gt; object &lt;object&gt;, is present in the database but never\r
440         <em>directly</em> used. A dangling commit could be a root node.\r
441 </p>\r
442 </dd>\r
443 <dt>\r
444 warning: git-fsck-objects: tree &lt;tree&gt; has full pathnames in it\r
445 </dt>\r
446 <dd>\r
447 <p>\r
448         And it shouldn't&#8230;\r
449 </p>\r
450 </dd>\r
451 <dt>\r
452 sha1 mismatch &lt;object&gt;\r
453 </dt>\r
454 <dd>\r
455 <p>\r
456         The database has an object who's sha1 doesn't match the\r
457         database value.\r
458         This indicates a serious data integrity problem.\r
459 </p>\r
460 </dd>\r
461 </dl>\r
462 </div>\r
463 <h2>Environment Variables</h2>\r
464 <div class="sectionbody">\r
465 <dl>\r
466 <dt>\r
467 GIT_OBJECT_DIRECTORY\r
468 </dt>\r
469 <dd>\r
470 <p>\r
471         used to specify the object database root (usually $GIT_DIR/objects)\r
472 </p>\r
473 </dd>\r
474 <dt>\r
475 GIT_INDEX_FILE\r
476 </dt>\r
477 <dd>\r
478 <p>\r
479         used to specify the index file of the index\r
480 </p>\r
481 </dd>\r
482 <dt>\r
483 GIT_ALTERNATE_OBJECT_DIRECTORIES\r
484 </dt>\r
485 <dd>\r
486 <p>\r
487         used to specify additional object database roots (usually unset)\r
488 </p>\r
489 </dd>\r
490 </dl>\r
491 </div>\r
492 <h2>Author</h2>\r
493 <div class="sectionbody">\r
494 <p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p>\r
495 </div>\r
496 <h2>Documentation</h2>\r
497 <div class="sectionbody">\r
498 <p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p>\r
499 </div>\r
500 <h2>GIT</h2>\r
501 <div class="sectionbody">\r
502 <p>Part of the <a href="git.html">git(7)</a> suite</p>\r
503 </div>\r
504 <div id="footer">\r
505 <div id="footer-text">\r
506 Last updated 06-Jan-2006 17:12:31 PDT\r
507 </div>\r
508 </div>\r
509 </body>\r
510 </html>\r