blob: 3836696d9c24c65695ff684829a0108eb5f99cb0 [file] [log] [blame]
Junio C Hamano679d22d2007-06-02 21:13:441<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Junio C Hamano2e6ded82010-12-05 06:20:486<meta name="generator" content="AsciiDoc 8.4.5" />
7<title>gitignore(5)</title>
Junio C Hamano679d22d2007-06-02 21:13:448<style type="text/css">
9/* Debug borders */
10p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
11/*
12 border: 1px solid red;
13*/
14}
15
16body {
17 margin: 1em 5% 1em 5%;
18}
19
Junio C Hamanoba4b9282008-07-06 05:20:3120a {
21 color: blue;
22 text-decoration: underline;
23}
24a:visited {
25 color: fuchsia;
26}
Junio C Hamano679d22d2007-06-02 21:13:4427
28em {
29 font-style: italic;
Junio C Hamano2e6ded82010-12-05 06:20:4830 color: navy;
Junio C Hamano679d22d2007-06-02 21:13:4431}
32
33strong {
34 font-weight: bold;
Junio C Hamano2e6ded82010-12-05 06:20:4835 color: #083194;
Junio C Hamano679d22d2007-06-02 21:13:4436}
37
38tt {
39 color: navy;
40}
41
42h1, h2, h3, h4, h5, h6 {
43 color: #527bbd;
44 font-family: sans-serif;
45 margin-top: 1.2em;
46 margin-bottom: 0.5em;
47 line-height: 1.3;
48}
49
Junio C Hamanoba4b9282008-07-06 05:20:3150h1, h2, h3 {
Junio C Hamano679d22d2007-06-02 21:13:4451 border-bottom: 2px solid silver;
52}
53h2 {
Junio C Hamano679d22d2007-06-02 21:13:4454 padding-top: 0.5em;
55}
Junio C Hamanoba4b9282008-07-06 05:20:3156h3 {
57 float: left;
58}
59h3 + * {
60 clear: left;
61}
Junio C Hamano679d22d2007-06-02 21:13:4462
63div.sectionbody {
64 font-family: serif;
65 margin-left: 0;
66}
67
68hr {
69 border: 1px solid silver;
70}
71
72p {
73 margin-top: 0.5em;
74 margin-bottom: 0.5em;
75}
76
Junio C Hamano2e6ded82010-12-05 06:20:4877ul, ol, li > p {
78 margin-top: 0;
79}
80
Junio C Hamano679d22d2007-06-02 21:13:4481pre {
82 padding: 0;
83 margin: 0;
84}
85
86span#author {
87 color: #527bbd;
88 font-family: sans-serif;
89 font-weight: bold;
Junio C Hamanoba4b9282008-07-06 05:20:3190 font-size: 1.1em;
Junio C Hamano679d22d2007-06-02 21:13:4491}
92span#email {
93}
Junio C Hamano2e6ded82010-12-05 06:20:4894span#revnumber, span#revdate, span#revremark {
Junio C Hamano679d22d2007-06-02 21:13:4495 font-family: sans-serif;
96}
97
98div#footer {
99 font-family: sans-serif;
100 font-size: small;
101 border-top: 2px solid silver;
102 padding-top: 0.5em;
103 margin-top: 4.0em;
104}
105div#footer-text {
106 float: left;
107 padding-bottom: 0.5em;
108}
109div#footer-badges {
110 float: right;
111 padding-bottom: 0.5em;
112}
113
Junio C Hamano2e6ded82010-12-05 06:20:48114div#preamble {
115 margin-top: 1.5em;
116 margin-bottom: 1.5em;
117}
Junio C Hamano679d22d2007-06-02 21:13:44118div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
119div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
120div.admonitionblock {
Junio C Hamano679d22d2007-06-02 21:13:44121 margin-top: 1.5em;
122 margin-bottom: 1.5em;
123}
124div.admonitionblock {
125 margin-top: 2.5em;
126 margin-bottom: 2.5em;
127}
128
129div.content { /* Block element content. */
130 padding: 0;
131}
132
133/* Block element titles. */
134div.title, caption.title {
Junio C Hamano2e6ded82010-12-05 06:20:48135 color: #527bbd;
Junio C Hamano679d22d2007-06-02 21:13:44136 font-family: sans-serif;
137 font-weight: bold;
138 text-align: left;
139 margin-top: 1.0em;
140 margin-bottom: 0.5em;
141}
142div.title + * {
143 margin-top: 0;
144}
145
146td div.title:first-child {
147 margin-top: 0.0em;
148}
149div.content div.title:first-child {
150 margin-top: 0.0em;
151}
152div.content + div.title {
153 margin-top: 0.0em;
154}
155
156div.sidebarblock > div.content {
157 background: #ffffee;
158 border: 1px solid silver;
159 padding: 0.5em;
160}
161
162div.listingblock > div.content {
163 border: 1px solid silver;
164 background: #f4f4f4;
165 padding: 0.5em;
166}
167
Junio C Hamano2e6ded82010-12-05 06:20:48168div.quoteblock {
Junio C Hamano679d22d2007-06-02 21:13:44169 padding-left: 2.0em;
Junio C Hamano2e6ded82010-12-05 06:20:48170 margin-right: 10%;
Junio C Hamano679d22d2007-06-02 21:13:44171}
Junio C Hamano2e6ded82010-12-05 06:20:48172div.quoteblock > div.attribution {
173 padding-top: 0.5em;
Junio C Hamano679d22d2007-06-02 21:13:44174 text-align: right;
175}
Junio C Hamano2e6ded82010-12-05 06:20:48176
177div.verseblock {
178 padding-left: 2.0em;
179 margin-right: 10%;
180}
181div.verseblock > div.content {
182 white-space: pre;
183}
184div.verseblock > div.attribution {
185 padding-top: 0.75em;
186 text-align: left;
187}
188/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
Junio C Hamanoba4b9282008-07-06 05:20:31189div.verseblock + div.attribution {
190 text-align: left;
191}
Junio C Hamano679d22d2007-06-02 21:13:44192
193div.admonitionblock .icon {
194 vertical-align: top;
195 font-size: 1.1em;
196 font-weight: bold;
197 text-decoration: underline;
198 color: #527bbd;
199 padding-right: 0.5em;
200}
201div.admonitionblock td.content {
202 padding-left: 0.5em;
203 border-left: 2px solid silver;
204}
205
206div.exampleblock > div.content {
207 border-left: 2px solid silver;
208 padding: 0.5em;
209}
210
Junio C Hamano679d22d2007-06-02 21:13:44211div.imageblock div.content { padding-left: 0; }
Junio C Hamano679d22d2007-06-02 21:13:44212span.image img { border-style: none; }
Junio C Hamano2e6ded82010-12-05 06:20:48213a.image:visited { color: white; }
Junio C Hamano679d22d2007-06-02 21:13:44214
215dl {
216 margin-top: 0.8em;
217 margin-bottom: 0.8em;
218}
219dt {
220 margin-top: 0.5em;
221 margin-bottom: 0;
Junio C Hamano2e6ded82010-12-05 06:20:48222 font-style: normal;
223 color: navy;
Junio C Hamano679d22d2007-06-02 21:13:44224}
225dd > *:first-child {
Junio C Hamano2e6ded82010-12-05 06:20:48226 margin-top: 0.1em;
Junio C Hamano679d22d2007-06-02 21:13:44227}
228
229ul, ol {
230 list-style-position: outside;
231}
Junio C Hamano2e6ded82010-12-05 06:20:48232ol.arabic {
233 list-style-type: decimal;
234}
235ol.loweralpha {
Junio C Hamano679d22d2007-06-02 21:13:44236 list-style-type: lower-alpha;
237}
Junio C Hamano2e6ded82010-12-05 06:20:48238ol.upperalpha {
239 list-style-type: upper-alpha;
240}
241ol.lowerroman {
242 list-style-type: lower-roman;
243}
244ol.upperroman {
245 list-style-type: upper-roman;
246}
247
248div.compact ul, div.compact ol,
249div.compact p, div.compact p,
250div.compact div, div.compact div {
251 margin-top: 0.1em;
252 margin-bottom: 0.1em;
253}
Junio C Hamano679d22d2007-06-02 21:13:44254
255div.tableblock > table {
Junio C Hamanoba4b9282008-07-06 05:20:31256 border: 3px solid #527bbd;
Junio C Hamano679d22d2007-06-02 21:13:44257}
258thead {
259 font-family: sans-serif;
260 font-weight: bold;
261}
262tfoot {
263 font-weight: bold;
264}
Junio C Hamano2e6ded82010-12-05 06:20:48265td > div.verse {
266 white-space: pre;
267}
268p.table {
269 margin-top: 0;
270}
271/* Because the table frame attribute is overriden by CSS in most browsers. */
272div.tableblock > table[frame="void"] {
273 border-style: none;
274}
275div.tableblock > table[frame="hsides"] {
276 border-left-style: none;
277 border-right-style: none;
278}
279div.tableblock > table[frame="vsides"] {
280 border-top-style: none;
281 border-bottom-style: none;
282}
Junio C Hamano679d22d2007-06-02 21:13:44283
Junio C Hamano2e6ded82010-12-05 06:20:48284
285div.hdlist {
Junio C Hamano679d22d2007-06-02 21:13:44286 margin-top: 0.8em;
287 margin-bottom: 0.8em;
288}
Junio C Hamano2e6ded82010-12-05 06:20:48289div.hdlist tr {
290 padding-bottom: 15px;
Junio C Hamanoba4b9282008-07-06 05:20:31291}
Junio C Hamano2e6ded82010-12-05 06:20:48292dt.hdlist1.strong, td.hdlist1.strong {
293 font-weight: bold;
294}
295td.hdlist1 {
Junio C Hamano679d22d2007-06-02 21:13:44296 vertical-align: top;
Junio C Hamano2e6ded82010-12-05 06:20:48297 font-style: normal;
Junio C Hamano679d22d2007-06-02 21:13:44298 padding-right: 0.8em;
Junio C Hamano2e6ded82010-12-05 06:20:48299 color: navy;
Junio C Hamano679d22d2007-06-02 21:13:44300}
Junio C Hamano2e6ded82010-12-05 06:20:48301td.hdlist2 {
Junio C Hamano679d22d2007-06-02 21:13:44302 vertical-align: top;
303}
Junio C Hamano2e6ded82010-12-05 06:20:48304div.hdlist.compact tr {
305 margin: 0;
306 padding-bottom: 0;
307}
308
309.comment {
310 background: yellow;
311}
Junio C Hamano679d22d2007-06-02 21:13:44312
313@media print {
314 div#footer-badges { display: none; }
315}
Junio C Hamanoba4b9282008-07-06 05:20:31316
317div#toctitle {
318 color: #527bbd;
319 font-family: sans-serif;
320 font-size: 1.1em;
321 font-weight: bold;
322 margin-top: 1.0em;
323 margin-bottom: 0.1em;
324}
325
326div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
327 margin-top: 0;
328 margin-bottom: 0;
329}
330div.toclevel2 {
331 margin-left: 2em;
332 font-size: 0.9em;
333}
334div.toclevel3 {
335 margin-left: 4em;
336 font-size: 0.9em;
337}
338div.toclevel4 {
339 margin-left: 6em;
340 font-size: 0.9em;
341}
Junio C Hamano2e6ded82010-12-05 06:20:48342/* Overrides for manpage documents */
343h1 {
344 padding-top: 0.5em;
345 padding-bottom: 0.5em;
346 border-top: 2px solid silver;
347 border-bottom: 2px solid silver;
348}
349h2 {
350 border-style: none;
351}
352div.sectionbody {
353 margin-left: 5%;
354}
355
356@media print {
357 div#toc { display: none; }
358}
359
Junio C Hamano679d22d2007-06-02 21:13:44360/* Workarounds for IE6's broken and incomplete CSS2. */
361
362div.sidebar-content {
363 background: #ffffee;
364 border: 1px solid silver;
365 padding: 0.5em;
366}
367div.sidebar-title, div.image-title {
Junio C Hamano2e6ded82010-12-05 06:20:48368 color: #527bbd;
Junio C Hamano679d22d2007-06-02 21:13:44369 font-family: sans-serif;
370 font-weight: bold;
371 margin-top: 0.0em;
372 margin-bottom: 0.5em;
373}
374
375div.listingblock div.content {
376 border: 1px solid silver;
377 background: #f4f4f4;
378 padding: 0.5em;
379}
380
Junio C Hamano2e6ded82010-12-05 06:20:48381div.quoteblock-attribution {
382 padding-top: 0.5em;
383 text-align: right;
384}
385
386div.verseblock-content {
387 white-space: pre;
388}
389div.verseblock-attribution {
390 padding-top: 0.75em;
391 text-align: left;
Junio C Hamano679d22d2007-06-02 21:13:44392}
393
394div.exampleblock-content {
395 border-left: 2px solid silver;
396 padding-left: 0.5em;
397}
Junio C Hamanoba4b9282008-07-06 05:20:31398
399/* IE6 sets dynamically generated links as visited. */
400div#toc a:visited { color: blue; }
Junio C Hamano679d22d2007-06-02 21:13:44401</style>
Junio C Hamano679d22d2007-06-02 21:13:44402</head>
403<body>
404<div id="header">
405<h1>
406gitignore(5) Manual Page
407</h1>
408<h2>NAME</h2>
409<div class="sectionbody">
410<p>gitignore -
411 Specifies intentionally untracked files to ignore
412</p>
413</div>
414</div>
Junio C Hamano2e6ded82010-12-05 06:20:48415<h2 id="_synopsis">SYNOPSIS</h2>
Junio C Hamano679d22d2007-06-02 21:13:44416<div class="sectionbody">
Junio C Hamano2e6ded82010-12-05 06:20:48417<div class="paragraph"><p>$GIT_DIR/info/exclude, .gitignore</p></div>
Junio C Hamano679d22d2007-06-02 21:13:44418</div>
Junio C Hamanoba4b9282008-07-06 05:20:31419<h2 id="_description">DESCRIPTION</h2>
Junio C Hamano679d22d2007-06-02 21:13:44420<div class="sectionbody">
Junio C Hamano2e6ded82010-12-05 06:20:48421<div class="paragraph"><p>A <tt>gitignore</tt> file specifies intentionally untracked files that
Junio C Hamano915cd9b2008-07-20 01:24:17422git should ignore.
Junio C Hamano2e6ded82010-12-05 06:20:48423Files already tracked by git are not affected; see the NOTES
424below for details.</p></div>
425<div class="paragraph"><p>Each line in a <tt>gitignore</tt> file specifies a pattern.
Junio C Hamano915cd9b2008-07-20 01:24:17426When deciding whether to ignore a path, git normally checks
Junio C Hamano679d22d2007-06-02 21:13:44427<tt>gitignore</tt> patterns from multiple sources, with the following
Junio C Hamanode9879a2007-07-22 09:33:42428order of precedence, from highest to lowest (within one level of
Junio C Hamanoba4b9282008-07-06 05:20:31429precedence, the last matching pattern decides the outcome):</p></div>
Junio C Hamano2e6ded82010-12-05 06:20:48430<div class="ulist"><ul>
Junio C Hamano679d22d2007-06-02 21:13:44431<li>
432<p>
Junio C Hamanode9879a2007-07-22 09:33:42433Patterns read from the command line for those commands that support
434 them.
435</p>
436</li>
437<li>
438<p>
439Patterns read from a <tt>.gitignore</tt> file in the same directory
440 as the path, or in any parent directory, with patterns in the
Junio C Hamanob4a9ede2009-04-08 07:36:32441 higher level files (up to the toplevel of the work tree) being overridden
442 by those in lower level files down to the directory containing the file.
Junio C Hamanode9879a2007-07-22 09:33:42443 These patterns match relative to the location of the
444 <tt>.gitignore</tt> file. A project normally includes such
445 <tt>.gitignore</tt> files in its repository, containing patterns for
446 files generated as part of the project build.
Junio C Hamano679d22d2007-06-02 21:13:44447</p>
448</li>
449<li>
450<p>
451Patterns read from <tt>$GIT_DIR/info/exclude</tt>.
452</p>
453</li>
454<li>
455<p>
Junio C Hamanode9879a2007-07-22 09:33:42456Patterns read from the file specified by the configuration
457 variable <em>core.excludesfile</em>.
Junio C Hamano679d22d2007-06-02 21:13:44458</p>
459</li>
Junio C Hamanoba4b9282008-07-06 05:20:31460</ul></div>
Junio C Hamano2e6ded82010-12-05 06:20:48461<div class="paragraph"><p>Which file to place a pattern in depends on how the pattern is meant to
Junio C Hamano99dc24a2008-03-27 23:49:50462be used. Patterns which should be version-controlled and distributed to
463other repositories via clone (i.e., files that all developers will want
464to ignore) should go into a <tt>.gitignore</tt> file. Patterns which are
465specific to a particular repository but which do not need to be shared
466with other related repositories (e.g., auxiliary files that live inside
Junio C Hamano2e6ded82010-12-05 06:20:48467the repository but are specific to one user&#8217;s workflow) should go into
Junio C Hamano99dc24a2008-03-27 23:49:50468the <tt>$GIT_DIR/info/exclude</tt> file. Patterns which a user wants git to
469ignore in all situations (e.g., backup or temporary files generated by
Junio C Hamano2e6ded82010-12-05 06:20:48470the user&#8217;s editor of choice) generally go into a file specified by
471<tt>core.excludesfile</tt> in the user&#8217;s <tt>~/.gitconfig</tt>.</p></div>
472<div class="paragraph"><p>The underlying git plumbing tools, such as
Junio C Hamano1aa40d22010-01-21 17:46:43473<em>git ls-files</em> and <em>git read-tree</em>, read
Junio C Hamano679d22d2007-06-02 21:13:44474<tt>gitignore</tt> patterns specified by command-line options, or from
475files specified by command-line options. Higher-level git
Junio C Hamano1aa40d22010-01-21 17:46:43476tools, such as <em>git status</em> and <em>git add</em>,
Junio C Hamanoba4b9282008-07-06 05:20:31477use patterns from the sources specified above.</p></div>
Junio C Hamano2e6ded82010-12-05 06:20:48478</div>
479<h2 id="_pattern_format">PATTERN FORMAT</h2>
480<div class="sectionbody">
481<div class="ulist"><ul>
Junio C Hamano679d22d2007-06-02 21:13:44482<li>
483<p>
484A blank line matches no files, so it can serve as a separator
485 for readability.
486</p>
487</li>
488<li>
489<p>
490A line starting with # serves as a comment.
491</p>
492</li>
493<li>
494<p>
495An optional prefix <em>!</em> which negates the pattern; any
496 matching file excluded by a previous pattern will become
Junio C Hamanode9879a2007-07-22 09:33:42497 included again. If a negated pattern matches, this will
498 override lower precedence patterns sources.
Junio C Hamano679d22d2007-06-02 21:13:44499</p>
500</li>
501<li>
502<p>
Junio C Hamano26e590a2008-02-17 03:53:51503If the pattern ends with a slash, it is removed for the
504 purpose of the following description, but it would only find
505 a match with a directory. In other words, <tt>foo/</tt> will match a
506 directory <tt>foo</tt> and paths underneath it, but will not match a
507 regular file or a symbolic link <tt>foo</tt> (this is consistent
508 with the way how pathspec works in general in git).
509</p>
510</li>
511<li>
512<p>
Junio C Hamano679d22d2007-06-02 21:13:44513If the pattern does not contain a slash <em>/</em>, git treats it as
514 a shell glob pattern and checks for a match against the
Junio C Hamanoa574a092010-06-13 19:57:10515 pathname relative to the location of the <tt>.gitignore</tt> file
516 (relative to the toplevel of the work tree if not from a
517 <tt>.gitignore</tt> file).
Junio C Hamano679d22d2007-06-02 21:13:44518</p>
519</li>
520<li>
521<p>
522Otherwise, git treats the pattern as a shell glob suitable
523 for consumption by fnmatch(3) with the FNM_PATHNAME flag:
524 wildcards in the pattern will not match a / in the pathname.
Junio C Hamano2db3e752010-09-03 21:33:06525 For example, "Documentation/&#42;.html" matches
Junio C Hamanoa574a092010-06-13 19:57:10526 "Documentation/git.html" but not "Documentation/ppc/ppc.html"
527 or "tools/perf/Documentation/perf.html".
528</p>
529</li>
530<li>
531<p>
532A leading slash matches the beginning of the pathname.
Junio C Hamano2db3e752010-09-03 21:33:06533 For example, "/&#42;.c" matches "cat-file.c" but not
Junio C Hamanoa574a092010-06-13 19:57:10534 "mozilla-sha1/sha1.c".
Junio C Hamano679d22d2007-06-02 21:13:44535</p>
536</li>
Junio C Hamanoba4b9282008-07-06 05:20:31537</ul></div>
Junio C Hamano2e6ded82010-12-05 06:20:48538</div>
539<h2 id="_notes">NOTES</h2>
540<div class="sectionbody">
541<div class="paragraph"><p>The purpose of gitignore files is to ensure that certain files
542not tracked by git remain untracked.</p></div>
543<div class="paragraph"><p>To ignore uncommitted changes in a file that is already tracked,
544use <em>git update-index &#45;&#45;assume-unchanged</em>.</p></div>
545<div class="paragraph"><p>To stop tracking a file that is currently tracked, use
546<em>git rm --cached</em>.</p></div>
547</div>
548<h2 id="_examples">EXAMPLES</h2>
549<div class="sectionbody">
Junio C Hamano679d22d2007-06-02 21:13:44550<div class="listingblock">
551<div class="content">
Junio C Hamanofce7c7e2008-07-02 03:06:38552<pre><tt> $ git status
Junio C Hamano679d22d2007-06-02 21:13:44553 [...]
554 # Untracked files:
555 [...]
556 # Documentation/foo.html
557 # Documentation/gitignore.html
558 # file.o
559 # lib.a
560 # src/internal.o
561 [...]
562 $ cat .git/info/exclude
563 # ignore objects and archives, anywhere in the tree.
564 *.[oa]
565 $ cat Documentation/.gitignore
566 # ignore generated html files,
567 *.html
568 # except foo.html which is maintained by hand
569 !foo.html
Junio C Hamanofce7c7e2008-07-02 03:06:38570 $ git status
Junio C Hamano679d22d2007-06-02 21:13:44571 [...]
572 # Untracked files:
573 [...]
574 # Documentation/foo.html
575 [...]</tt></pre>
576</div></div>
Junio C Hamano2e6ded82010-12-05 06:20:48577<div class="paragraph"><p>Another example:</p></div>
Junio C Hamano679d22d2007-06-02 21:13:44578<div class="listingblock">
579<div class="content">
580<pre><tt> $ cat .gitignore
581 vmlinux*
582 $ ls arch/foo/kernel/vm*
583 arch/foo/kernel/vmlinux.lds.S
584 $ echo '!/vmlinux*' &gt;arch/foo/kernel/.gitignore</tt></pre>
585</div></div>
Junio C Hamano2e6ded82010-12-05 06:20:48586<div class="paragraph"><p>The second .gitignore prevents git from ignoring
Junio C Hamanoba4b9282008-07-06 05:20:31587<tt>arch/foo/kernel/vmlinux.lds.S</tt>.</p></div>
Junio C Hamano679d22d2007-06-02 21:13:44588</div>
Junio C Hamano2e6ded82010-12-05 06:20:48589<h2 id="_see_also">SEE ALSO</h2>
590<div class="sectionbody">
591<div class="paragraph"><p><a href="git-rm.html">git-rm(1)</a>, <a href="git-update-index.html">git-update-index(1)</a>,
592<a href="gitrepository-layout.html">gitrepository-layout(5)</a></p></div>
593</div>
Junio C Hamanoba4b9282008-07-06 05:20:31594<h2 id="_git">GIT</h2>
Junio C Hamano679d22d2007-06-02 21:13:44595<div class="sectionbody">
Junio C Hamano2e6ded82010-12-05 06:20:48596<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
Junio C Hamano679d22d2007-06-02 21:13:44597</div>
598<div id="footer">
599<div id="footer-text">
Junio C Hamano5f3d8392011-03-15 23:33:35600Last updated 2011-03-15 23:30:15 UTC
Junio C Hamano679d22d2007-06-02 21:13:44601</div>
602</div>
603</body>
604</html>