blob: 6be45fdca15fa010a3fa54158cf4aec6d9f6927c [file] [log] [blame]
Junio C Hamanodfccbb02008-05-26 01:16:141<!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>
Junio C Hamano9d971152012-12-19 00:43:115<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
Junio C Hamano61525f92014-01-17 22:46:496<meta name="generator" content="AsciiDoc 8.6.6" />
Junio C Hamano103b5722011-01-31 05:03:457<title>gitcvs-migration(7)</title>
Junio C Hamanodfccbb02008-05-26 01:16:148<style type="text/css">
Junio C Hamano9d971152012-12-19 00:43:119/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
10
11/* Default font. */
12body {
13 font-family: Georgia,serif;
14}
15
16/* Title font. */
17h1, h2, h3, h4, h5, h6,
18div.title, caption.title,
19thead, p.table.header,
20#toctitle,
21#author, #revnumber, #revdate, #revremark,
22#footer {
23 font-family: Arial,Helvetica,sans-serif;
Junio C Hamanodfccbb02008-05-26 01:16:1424}
25
26body {
27 margin: 1em 5% 1em 5%;
28}
29
Junio C Hamanoba4b9282008-07-06 05:20:3130a {
31 color: blue;
32 text-decoration: underline;
33}
34a:visited {
35 color: fuchsia;
36}
Junio C Hamanodfccbb02008-05-26 01:16:1437
38em {
39 font-style: italic;
Junio C Hamano103b5722011-01-31 05:03:4540 color: navy;
Junio C Hamanodfccbb02008-05-26 01:16:1441}
42
43strong {
44 font-weight: bold;
Junio C Hamano103b5722011-01-31 05:03:4545 color: #083194;
Junio C Hamanodfccbb02008-05-26 01:16:1446}
47
Junio C Hamanodfccbb02008-05-26 01:16:1448h1, h2, h3, h4, h5, h6 {
49 color: #527bbd;
Junio C Hamanodfccbb02008-05-26 01:16:1450 margin-top: 1.2em;
51 margin-bottom: 0.5em;
52 line-height: 1.3;
53}
54
Junio C Hamanoba4b9282008-07-06 05:20:3155h1, h2, h3 {
Junio C Hamanodfccbb02008-05-26 01:16:1456 border-bottom: 2px solid silver;
57}
58h2 {
Junio C Hamanodfccbb02008-05-26 01:16:1459 padding-top: 0.5em;
60}
Junio C Hamanoba4b9282008-07-06 05:20:3161h3 {
62 float: left;
63}
64h3 + * {
65 clear: left;
66}
Junio C Hamano9d971152012-12-19 00:43:1167h5 {
68 font-size: 1.0em;
69}
Junio C Hamanodfccbb02008-05-26 01:16:1470
71div.sectionbody {
Junio C Hamanodfccbb02008-05-26 01:16:1472 margin-left: 0;
73}
74
75hr {
76 border: 1px solid silver;
77}
78
79p {
80 margin-top: 0.5em;
81 margin-bottom: 0.5em;
82}
83
Junio C Hamano103b5722011-01-31 05:03:4584ul, ol, li > p {
85 margin-top: 0;
86}
Junio C Hamano9d971152012-12-19 00:43:1187ul > li { color: #aaa; }
88ul > li > * { color: black; }
Junio C Hamano103b5722011-01-31 05:03:4589
Junio C Hamano61525f92014-01-17 22:46:4990pre {
Junio C Hamanodfccbb02008-05-26 01:16:1491 padding: 0;
92 margin: 0;
93}
94
Junio C Hamano9d971152012-12-19 00:43:1195#author {
Junio C Hamanodfccbb02008-05-26 01:16:1496 color: #527bbd;
Junio C Hamanodfccbb02008-05-26 01:16:1497 font-weight: bold;
Junio C Hamanoba4b9282008-07-06 05:20:3198 font-size: 1.1em;
Junio C Hamanodfccbb02008-05-26 01:16:1499}
Junio C Hamano9d971152012-12-19 00:43:11100#email {
Junio C Hamanodfccbb02008-05-26 01:16:14101}
Junio C Hamano9d971152012-12-19 00:43:11102#revnumber, #revdate, #revremark {
Junio C Hamanodfccbb02008-05-26 01:16:14103}
104
Junio C Hamano9d971152012-12-19 00:43:11105#footer {
Junio C Hamanodfccbb02008-05-26 01:16:14106 font-size: small;
107 border-top: 2px solid silver;
108 padding-top: 0.5em;
109 margin-top: 4.0em;
110}
Junio C Hamano9d971152012-12-19 00:43:11111#footer-text {
Junio C Hamanodfccbb02008-05-26 01:16:14112 float: left;
113 padding-bottom: 0.5em;
114}
Junio C Hamano9d971152012-12-19 00:43:11115#footer-badges {
Junio C Hamanodfccbb02008-05-26 01:16:14116 float: right;
117 padding-bottom: 0.5em;
118}
119
Junio C Hamano9d971152012-12-19 00:43:11120#preamble {
Junio C Hamano103b5722011-01-31 05:03:45121 margin-top: 1.5em;
122 margin-bottom: 1.5em;
123}
Junio C Hamano9d971152012-12-19 00:43:11124div.imageblock, div.exampleblock, div.verseblock,
Junio C Hamanodfccbb02008-05-26 01:16:14125div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
126div.admonitionblock {
Junio C Hamano7bd050f2011-09-22 06:32:22127 margin-top: 1.0em;
Junio C Hamanodfccbb02008-05-26 01:16:14128 margin-bottom: 1.5em;
129}
130div.admonitionblock {
Junio C Hamano7bd050f2011-09-22 06:32:22131 margin-top: 2.0em;
132 margin-bottom: 2.0em;
133 margin-right: 10%;
134 color: #606060;
Junio C Hamanodfccbb02008-05-26 01:16:14135}
136
137div.content { /* Block element content. */
138 padding: 0;
139}
140
141/* Block element titles. */
142div.title, caption.title {
Junio C Hamano103b5722011-01-31 05:03:45143 color: #527bbd;
Junio C Hamanodfccbb02008-05-26 01:16:14144 font-weight: bold;
145 text-align: left;
146 margin-top: 1.0em;
147 margin-bottom: 0.5em;
148}
149div.title + * {
150 margin-top: 0;
151}
152
153td div.title:first-child {
154 margin-top: 0.0em;
155}
156div.content div.title:first-child {
157 margin-top: 0.0em;
158}
159div.content + div.title {
160 margin-top: 0.0em;
161}
162
163div.sidebarblock > div.content {
164 background: #ffffee;
Junio C Hamano9d971152012-12-19 00:43:11165 border: 1px solid #dddddd;
166 border-left: 4px solid #f0f0f0;
Junio C Hamanodfccbb02008-05-26 01:16:14167 padding: 0.5em;
168}
169
170div.listingblock > div.content {
Junio C Hamano9d971152012-12-19 00:43:11171 border: 1px solid #dddddd;
172 border-left: 5px solid #f0f0f0;
173 background: #f8f8f8;
Junio C Hamanodfccbb02008-05-26 01:16:14174 padding: 0.5em;
175}
176
Junio C Hamano7bd050f2011-09-22 06:32:22177div.quoteblock, div.verseblock {
178 padding-left: 1.0em;
179 margin-left: 1.0em;
Junio C Hamano103b5722011-01-31 05:03:45180 margin-right: 10%;
Junio C Hamano9d971152012-12-19 00:43:11181 border-left: 5px solid #f0f0f0;
182 color: #888;
Junio C Hamanodfccbb02008-05-26 01:16:14183}
Junio C Hamano7bd050f2011-09-22 06:32:22184
Junio C Hamano103b5722011-01-31 05:03:45185div.quoteblock > div.attribution {
186 padding-top: 0.5em;
Junio C Hamanodfccbb02008-05-26 01:16:14187 text-align: right;
188}
Junio C Hamano103b5722011-01-31 05:03:45189
Junio C Hamano9d971152012-12-19 00:43:11190div.verseblock > pre.content {
191 font-family: inherit;
192 font-size: inherit;
Junio C Hamano103b5722011-01-31 05:03:45193}
194div.verseblock > div.attribution {
195 padding-top: 0.75em;
196 text-align: left;
197}
198/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
Junio C Hamanoba4b9282008-07-06 05:20:31199div.verseblock + div.attribution {
200 text-align: left;
201}
Junio C Hamanodfccbb02008-05-26 01:16:14202
203div.admonitionblock .icon {
204 vertical-align: top;
205 font-size: 1.1em;
206 font-weight: bold;
207 text-decoration: underline;
208 color: #527bbd;
209 padding-right: 0.5em;
210}
211div.admonitionblock td.content {
212 padding-left: 0.5em;
Junio C Hamano7bd050f2011-09-22 06:32:22213 border-left: 3px solid #dddddd;
Junio C Hamanodfccbb02008-05-26 01:16:14214}
215
216div.exampleblock > div.content {
Junio C Hamano7bd050f2011-09-22 06:32:22217 border-left: 3px solid #dddddd;
218 padding-left: 0.5em;
Junio C Hamanodfccbb02008-05-26 01:16:14219}
220
Junio C Hamanodfccbb02008-05-26 01:16:14221div.imageblock div.content { padding-left: 0; }
Junio C Hamanodfccbb02008-05-26 01:16:14222span.image img { border-style: none; }
Junio C Hamano103b5722011-01-31 05:03:45223a.image:visited { color: white; }
Junio C Hamanodfccbb02008-05-26 01:16:14224
225dl {
226 margin-top: 0.8em;
227 margin-bottom: 0.8em;
228}
229dt {
230 margin-top: 0.5em;
231 margin-bottom: 0;
Junio C Hamano103b5722011-01-31 05:03:45232 font-style: normal;
233 color: navy;
Junio C Hamanodfccbb02008-05-26 01:16:14234}
235dd > *:first-child {
Junio C Hamano103b5722011-01-31 05:03:45236 margin-top: 0.1em;
Junio C Hamanodfccbb02008-05-26 01:16:14237}
238
239ul, ol {
240 list-style-position: outside;
241}
Junio C Hamano103b5722011-01-31 05:03:45242ol.arabic {
243 list-style-type: decimal;
244}
245ol.loweralpha {
Junio C Hamanodfccbb02008-05-26 01:16:14246 list-style-type: lower-alpha;
247}
Junio C Hamano103b5722011-01-31 05:03:45248ol.upperalpha {
249 list-style-type: upper-alpha;
250}
251ol.lowerroman {
252 list-style-type: lower-roman;
253}
254ol.upperroman {
255 list-style-type: upper-roman;
256}
257
258div.compact ul, div.compact ol,
259div.compact p, div.compact p,
260div.compact div, div.compact div {
261 margin-top: 0.1em;
262 margin-bottom: 0.1em;
263}
Junio C Hamanodfccbb02008-05-26 01:16:14264
Junio C Hamanodfccbb02008-05-26 01:16:14265tfoot {
266 font-weight: bold;
267}
Junio C Hamano103b5722011-01-31 05:03:45268td > div.verse {
269 white-space: pre;
270}
Junio C Hamano103b5722011-01-31 05:03:45271
272div.hdlist {
Junio C Hamanodfccbb02008-05-26 01:16:14273 margin-top: 0.8em;
274 margin-bottom: 0.8em;
275}
Junio C Hamano103b5722011-01-31 05:03:45276div.hdlist tr {
277 padding-bottom: 15px;
Junio C Hamanoba4b9282008-07-06 05:20:31278}
Junio C Hamano103b5722011-01-31 05:03:45279dt.hdlist1.strong, td.hdlist1.strong {
280 font-weight: bold;
281}
282td.hdlist1 {
Junio C Hamanodfccbb02008-05-26 01:16:14283 vertical-align: top;
Junio C Hamano103b5722011-01-31 05:03:45284 font-style: normal;
Junio C Hamanodfccbb02008-05-26 01:16:14285 padding-right: 0.8em;
Junio C Hamano103b5722011-01-31 05:03:45286 color: navy;
Junio C Hamanodfccbb02008-05-26 01:16:14287}
Junio C Hamano103b5722011-01-31 05:03:45288td.hdlist2 {
Junio C Hamanodfccbb02008-05-26 01:16:14289 vertical-align: top;
290}
Junio C Hamano103b5722011-01-31 05:03:45291div.hdlist.compact tr {
292 margin: 0;
293 padding-bottom: 0;
294}
295
296.comment {
297 background: yellow;
298}
Junio C Hamanodfccbb02008-05-26 01:16:14299
Junio C Hamano7bd050f2011-09-22 06:32:22300.footnote, .footnoteref {
301 font-size: 0.8em;
302}
303
304span.footnote, span.footnoteref {
305 vertical-align: super;
306}
307
308#footnotes {
309 margin: 20px 0 20px 0;
310 padding: 7px 0 0 0;
311}
312
313#footnotes div.footnote {
314 margin: 0 0 5px 0;
315}
316
317#footnotes hr {
318 border: none;
319 border-top: 1px solid silver;
320 height: 1px;
321 text-align: left;
322 margin-left: 0;
323 width: 20%;
324 min-width: 100px;
325}
326
Junio C Hamano9d971152012-12-19 00:43:11327div.colist td {
328 padding-right: 0.5em;
329 padding-bottom: 0.3em;
330 vertical-align: top;
331}
332div.colist td img {
333 margin-top: 0.3em;
Junio C Hamanodfccbb02008-05-26 01:16:14334}
Junio C Hamanoba4b9282008-07-06 05:20:31335
Junio C Hamano9d971152012-12-19 00:43:11336@media print {
337 #footer-badges { display: none; }
338}
339
340#toc {
Junio C Hamano7bd050f2011-09-22 06:32:22341 margin-bottom: 2.5em;
342}
343
Junio C Hamano9d971152012-12-19 00:43:11344#toctitle {
Junio C Hamanoba4b9282008-07-06 05:20:31345 color: #527bbd;
Junio C Hamanoba4b9282008-07-06 05:20:31346 font-size: 1.1em;
347 font-weight: bold;
348 margin-top: 1.0em;
349 margin-bottom: 0.1em;
350}
351
Junio C Hamano61525f92014-01-17 22:46:49352div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
Junio C Hamanoba4b9282008-07-06 05:20:31353 margin-top: 0;
354 margin-bottom: 0;
355}
356div.toclevel2 {
357 margin-left: 2em;
358 font-size: 0.9em;
359}
360div.toclevel3 {
361 margin-left: 4em;
362 font-size: 0.9em;
363}
364div.toclevel4 {
365 margin-left: 6em;
366 font-size: 0.9em;
367}
Junio C Hamano9d971152012-12-19 00:43:11368
369span.aqua { color: aqua; }
370span.black { color: black; }
371span.blue { color: blue; }
372span.fuchsia { color: fuchsia; }
373span.gray { color: gray; }
374span.green { color: green; }
375span.lime { color: lime; }
376span.maroon { color: maroon; }
377span.navy { color: navy; }
378span.olive { color: olive; }
379span.purple { color: purple; }
380span.red { color: red; }
381span.silver { color: silver; }
382span.teal { color: teal; }
383span.white { color: white; }
384span.yellow { color: yellow; }
385
386span.aqua-background { background: aqua; }
387span.black-background { background: black; }
388span.blue-background { background: blue; }
389span.fuchsia-background { background: fuchsia; }
390span.gray-background { background: gray; }
391span.green-background { background: green; }
392span.lime-background { background: lime; }
393span.maroon-background { background: maroon; }
394span.navy-background { background: navy; }
395span.olive-background { background: olive; }
396span.purple-background { background: purple; }
397span.red-background { background: red; }
398span.silver-background { background: silver; }
399span.teal-background { background: teal; }
400span.white-background { background: white; }
401span.yellow-background { background: yellow; }
402
403span.big { font-size: 2em; }
404span.small { font-size: 0.6em; }
405
406span.underline { text-decoration: underline; }
407span.overline { text-decoration: overline; }
408span.line-through { text-decoration: line-through; }
409
Junio C Hamano9d971152012-12-19 00:43:11410
411/*
412 * xhtml11 specific
413 *
414 * */
415
Junio C Hamano61525f92014-01-17 22:46:49416tt {
417 font-family: monospace;
418 font-size: inherit;
419 color: navy;
420}
421
Junio C Hamano9d971152012-12-19 00:43:11422div.tableblock {
423 margin-top: 1.0em;
424 margin-bottom: 1.5em;
425}
426div.tableblock > table {
427 border: 3px solid #527bbd;
428}
429thead, p.table.header {
430 font-weight: bold;
431 color: #527bbd;
432}
433p.table {
434 margin-top: 0;
435}
436/* Because the table frame attribute is overriden by CSS in most browsers. */
437div.tableblock > table[frame="void"] {
438 border-style: none;
439}
440div.tableblock > table[frame="hsides"] {
441 border-left-style: none;
442 border-right-style: none;
443}
444div.tableblock > table[frame="vsides"] {
445 border-top-style: none;
446 border-bottom-style: none;
447}
448
449
450/*
451 * html5 specific
452 *
453 * */
454
Junio C Hamano61525f92014-01-17 22:46:49455.monospaced {
456 font-family: monospace;
457 font-size: inherit;
458 color: navy;
459}
460
Junio C Hamano9d971152012-12-19 00:43:11461table.tableblock {
462 margin-top: 1.0em;
463 margin-bottom: 1.5em;
464}
465thead, p.tableblock.header {
466 font-weight: bold;
467 color: #527bbd;
468}
469p.tableblock {
470 margin-top: 0;
471}
472table.tableblock {
473 border-width: 3px;
474 border-spacing: 0px;
475 border-style: solid;
476 border-color: #527bbd;
477 border-collapse: collapse;
478}
479th.tableblock, td.tableblock {
480 border-width: 1px;
481 padding: 4px;
482 border-style: solid;
483 border-color: #527bbd;
484}
485
486table.tableblock.frame-topbot {
487 border-left-style: hidden;
488 border-right-style: hidden;
489}
490table.tableblock.frame-sides {
491 border-top-style: hidden;
492 border-bottom-style: hidden;
493}
494table.tableblock.frame-none {
495 border-style: hidden;
496}
497
498th.tableblock.halign-left, td.tableblock.halign-left {
499 text-align: left;
500}
501th.tableblock.halign-center, td.tableblock.halign-center {
502 text-align: center;
503}
504th.tableblock.halign-right, td.tableblock.halign-right {
505 text-align: right;
506}
507
508th.tableblock.valign-top, td.tableblock.valign-top {
509 vertical-align: top;
510}
511th.tableblock.valign-middle, td.tableblock.valign-middle {
512 vertical-align: middle;
513}
514th.tableblock.valign-bottom, td.tableblock.valign-bottom {
515 vertical-align: bottom;
516}
517
518
519/*
520 * manpage specific
521 *
522 * */
523
524body.manpage h1 {
Junio C Hamano103b5722011-01-31 05:03:45525 padding-top: 0.5em;
526 padding-bottom: 0.5em;
527 border-top: 2px solid silver;
528 border-bottom: 2px solid silver;
529}
Junio C Hamano9d971152012-12-19 00:43:11530body.manpage h2 {
Junio C Hamano103b5722011-01-31 05:03:45531 border-style: none;
532}
Junio C Hamano9d971152012-12-19 00:43:11533body.manpage div.sectionbody {
534 margin-left: 3em;
Junio C Hamano103b5722011-01-31 05:03:45535}
536
537@media print {
Junio C Hamano9d971152012-12-19 00:43:11538 body.manpage div#toc { display: none; }
Junio C Hamano103b5722011-01-31 05:03:45539}
Junio C Hamanodfccbb02008-05-26 01:16:14540</style>
Junio C Hamano7bd050f2011-09-22 06:32:22541<script type="text/javascript">
542/*<![CDATA[*/
Junio C Hamano7bd050f2011-09-22 06:32:22543var asciidoc = { // Namespace.
544
545/////////////////////////////////////////////////////////////////////
546// Table Of Contents generator
547/////////////////////////////////////////////////////////////////////
548
549/* Author: Mihai Bazon, September 2002
550 * http://students.infoiasi.ro/~mishoo
551 *
552 * Table Of Content generator
553 * Version: 0.4
554 *
555 * Feel free to use this script under the terms of the GNU General Public
556 * License, as long as you do not remove or alter this notice.
557 */
558
559 /* modified by Troy D. Hanson, September 2006. License: GPL */
560 /* modified by Stuart Rackham, 2006, 2009. License: GPL */
561
562// toclevels = 1..4.
563toc: function (toclevels) {
564
565 function getText(el) {
566 var text = "";
567 for (var i = el.firstChild; i != null; i = i.nextSibling) {
568 if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
569 text += i.data;
570 else if (i.firstChild != null)
571 text += getText(i);
572 }
573 return text;
574 }
575
576 function TocEntry(el, text, toclevel) {
577 this.element = el;
578 this.text = text;
579 this.toclevel = toclevel;
580 }
581
582 function tocEntries(el, toclevels) {
583 var result = new Array;
Junio C Hamano61525f92014-01-17 22:46:49584 var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
Junio C Hamano7bd050f2011-09-22 06:32:22585 // Function that scans the DOM tree for header elements (the DOM2
586 // nodeIterator API would be a better technique but not supported by all
587 // browsers).
588 var iterate = function (el) {
589 for (var i = el.firstChild; i != null; i = i.nextSibling) {
590 if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
591 var mo = re.exec(i.tagName);
592 if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
593 result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
594 }
595 iterate(i);
596 }
597 }
598 }
599 iterate(el);
600 return result;
601 }
602
603 var toc = document.getElementById("toc");
Junio C Hamano9d971152012-12-19 00:43:11604 if (!toc) {
605 return;
606 }
607
608 // Delete existing TOC entries in case we're reloading the TOC.
609 var tocEntriesToRemove = [];
610 var i;
611 for (i = 0; i < toc.childNodes.length; i++) {
612 var entry = toc.childNodes[i];
Junio C Hamano61525f92014-01-17 22:46:49613 if (entry.nodeName == 'div'
Junio C Hamano9d971152012-12-19 00:43:11614 && entry.getAttribute("class")
615 && entry.getAttribute("class").match(/^toclevel/))
616 tocEntriesToRemove.push(entry);
617 }
618 for (i = 0; i < tocEntriesToRemove.length; i++) {
619 toc.removeChild(tocEntriesToRemove[i]);
620 }
621
622 // Rebuild TOC entries.
Junio C Hamano7bd050f2011-09-22 06:32:22623 var entries = tocEntries(document.getElementById("content"), toclevels);
624 for (var i = 0; i < entries.length; ++i) {
625 var entry = entries[i];
626 if (entry.element.id == "")
627 entry.element.id = "_toc_" + i;
628 var a = document.createElement("a");
629 a.href = "#" + entry.element.id;
630 a.appendChild(document.createTextNode(entry.text));
631 var div = document.createElement("div");
632 div.appendChild(a);
633 div.className = "toclevel" + entry.toclevel;
634 toc.appendChild(div);
635 }
636 if (entries.length == 0)
637 toc.parentNode.removeChild(toc);
638},
639
640
641/////////////////////////////////////////////////////////////////////
642// Footnotes generator
643/////////////////////////////////////////////////////////////////////
644
645/* Based on footnote generation code from:
646 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
647 */
648
649footnotes: function () {
Junio C Hamano9d971152012-12-19 00:43:11650 // Delete existing footnote entries in case we're reloading the footnodes.
651 var i;
Junio C Hamano7bd050f2011-09-22 06:32:22652 var noteholder = document.getElementById("footnotes");
Junio C Hamano9d971152012-12-19 00:43:11653 if (!noteholder) {
654 return;
655 }
656 var entriesToRemove = [];
657 for (i = 0; i < noteholder.childNodes.length; i++) {
658 var entry = noteholder.childNodes[i];
Junio C Hamano61525f92014-01-17 22:46:49659 if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")
Junio C Hamano9d971152012-12-19 00:43:11660 entriesToRemove.push(entry);
661 }
662 for (i = 0; i < entriesToRemove.length; i++) {
663 noteholder.removeChild(entriesToRemove[i]);
664 }
665
666 // Rebuild footnote entries.
667 var cont = document.getElementById("content");
Junio C Hamano7bd050f2011-09-22 06:32:22668 var spans = cont.getElementsByTagName("span");
669 var refs = {};
670 var n = 0;
671 for (i=0; i<spans.length; i++) {
672 if (spans[i].className == "footnote") {
673 n++;
Junio C Hamano9d971152012-12-19 00:43:11674 var note = spans[i].getAttribute("data-note");
675 if (!note) {
676 // Use [\s\S] in place of . so multi-line matches work.
677 // Because JavaScript has no s (dotall) regex flag.
678 note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
679 spans[i].innerHTML =
680 "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
681 "' title='View footnote' class='footnote'>" + n + "</a>]";
682 spans[i].setAttribute("data-note", note);
683 }
Junio C Hamano7bd050f2011-09-22 06:32:22684 noteholder.innerHTML +=
685 "<div class='footnote' id='_footnote_" + n + "'>" +
686 "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
687 n + "</a>. " + note + "</div>";
Junio C Hamano7bd050f2011-09-22 06:32:22688 var id =spans[i].getAttribute("id");
689 if (id != null) refs["#"+id] = n;
690 }
691 }
692 if (n == 0)
693 noteholder.parentNode.removeChild(noteholder);
694 else {
695 // Process footnoterefs.
696 for (i=0; i<spans.length; i++) {
697 if (spans[i].className == "footnoteref") {
698 var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
699 href = href.match(/#.*/)[0]; // Because IE return full URL.
700 n = refs[href];
701 spans[i].innerHTML =
702 "[<a href='#_footnote_" + n +
703 "' title='View footnote' class='footnote'>" + n + "</a>]";
704 }
705 }
706 }
Junio C Hamano9d971152012-12-19 00:43:11707},
708
709install: function(toclevels) {
710 var timerId;
711
712 function reinstall() {
713 asciidoc.footnotes();
714 if (toclevels) {
715 asciidoc.toc(toclevels);
716 }
717 }
718
719 function reinstallAndRemoveTimer() {
720 clearInterval(timerId);
721 reinstall();
722 }
723
724 timerId = setInterval(reinstall, 500);
725 if (document.addEventListener)
726 document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
727 else
728 window.onload = reinstallAndRemoveTimer;
Junio C Hamano7bd050f2011-09-22 06:32:22729}
730
731}
Junio C Hamano9d971152012-12-19 00:43:11732asciidoc.install();
Junio C Hamano7bd050f2011-09-22 06:32:22733/*]]>*/
734</script>
Junio C Hamanodfccbb02008-05-26 01:16:14735</head>
Junio C Hamano9d971152012-12-19 00:43:11736<body class="manpage">
Junio C Hamanodfccbb02008-05-26 01:16:14737<div id="header">
738<h1>
739gitcvs-migration(7) Manual Page
740</h1>
741<h2>NAME</h2>
742<div class="sectionbody">
743<p>gitcvs-migration -
Junio C Hamano076ffcc2013-02-06 05:13:21744 Git for CVS users
Junio C Hamanodfccbb02008-05-26 01:16:14745</p>
746</div>
747</div>
Junio C Hamano7bd050f2011-09-22 06:32:22748<div id="content">
Junio C Hamano9d971152012-12-19 00:43:11749<div class="sect1">
Junio C Hamano103b5722011-01-31 05:03:45750<h2 id="_synopsis">SYNOPSIS</h2>
Junio C Hamanodfccbb02008-05-26 01:16:14751<div class="sectionbody">
Junio C Hamano15567bc2011-07-23 00:51:59752<div class="verseblock">
Junio C Hamano9d971152012-12-19 00:43:11753<pre class="content"><em>git cvsimport</em> *</pre>
754<div class="attribution">
Junio C Hamano15567bc2011-07-23 00:51:59755</div></div>
Junio C Hamanodfccbb02008-05-26 01:16:14756</div>
Junio C Hamano9d971152012-12-19 00:43:11757</div>
758<div class="sect1">
Junio C Hamanoba4b9282008-07-06 05:20:31759<h2 id="_description">DESCRIPTION</h2>
Junio C Hamanodfccbb02008-05-26 01:16:14760<div class="sectionbody">
Junio C Hamano103b5722011-01-31 05:03:45761<div class="paragraph"><p>Git differs from CVS in that every working tree contains a repository with
Junio C Hamanodfccbb02008-05-26 01:16:14762a full copy of the project history, and no repository is inherently more
763important than any other. However, you can emulate the CVS model by
764designating a single shared repository which people can synchronize with;
Junio C Hamanoba4b9282008-07-06 05:20:31765this document explains how to do that.</p></div>
Junio C Hamano076ffcc2013-02-06 05:13:21766<div class="paragraph"><p>Some basic familiarity with Git is required. Having gone through
Junio C Hamanoa28a9202012-06-21 07:08:23767<a href="gittutorial.html">gittutorial(7)</a> and
768<a href="gitglossary.html">gitglossary(7)</a> should be sufficient.</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14769</div>
Junio C Hamano9d971152012-12-19 00:43:11770</div>
771<div class="sect1">
Junio C Hamanoba4b9282008-07-06 05:20:31772<h2 id="_developing_against_a_shared_repository">Developing against a shared repository</h2>
Junio C Hamanodfccbb02008-05-26 01:16:14773<div class="sectionbody">
Junio C Hamano103b5722011-01-31 05:03:45774<div class="paragraph"><p>Suppose a shared repository is set up in /pub/repo.git on the host
Junio C Hamanodfccbb02008-05-26 01:16:14775foo.com. Then as an individual committer you can clone the shared
Junio C Hamanoba4b9282008-07-06 05:20:31776repository over ssh with:</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14777<div class="listingblock">
778<div class="content">
Junio C Hamano61525f92014-01-17 22:46:49779<pre><tt>$ git clone foo.com:/pub/repo.git/ my-project
780$ cd my-project</tt></pre>
Junio C Hamanodfccbb02008-05-26 01:16:14781</div></div>
Junio C Hamano103b5722011-01-31 05:03:45782<div class="paragraph"><p>and hack away. The equivalent of <em>cvs update</em> is</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14783<div class="listingblock">
784<div class="content">
Junio C Hamano61525f92014-01-17 22:46:49785<pre><tt>$ git pull origin</tt></pre>
Junio C Hamanodfccbb02008-05-26 01:16:14786</div></div>
Junio C Hamano103b5722011-01-31 05:03:45787<div class="paragraph"><p>which merges in any work that others might have done since the clone
Junio C Hamanodfccbb02008-05-26 01:16:14788operation. If there are uncommitted changes in your working tree, commit
Junio C Hamanoba4b9282008-07-06 05:20:31789them first before running git pull.</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14790<div class="admonitionblock">
791<table><tr>
792<td class="icon">
793<div class="title">Note</div>
794</td>
795<td class="content">
Junio C Hamano103b5722011-01-31 05:03:45796<div class="paragraph"><p>The <em>pull</em> command knows where to get updates from because of certain
Junio C Hamano1aa40d22010-01-21 17:46:43797configuration variables that were set by the first <em>git clone</em>
Junio C Hamano61525f92014-01-17 22:46:49798command; see <tt>git config -l</tt> and the <a href="git-config.html">git-config(1)</a> man
Junio C Hamanoba4b9282008-07-06 05:20:31799page for details.</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14800</td>
801</tr></table>
802</div>
Junio C Hamano103b5722011-01-31 05:03:45803<div class="paragraph"><p>You can update the shared repository with your changes by first committing
Junio C Hamano1aa40d22010-01-21 17:46:43804your changes, and then using the <em>git push</em> command:</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14805<div class="listingblock">
806<div class="content">
Junio C Hamano61525f92014-01-17 22:46:49807<pre><tt>$ git push origin master</tt></pre>
Junio C Hamanodfccbb02008-05-26 01:16:14808</div></div>
Junio C Hamano103b5722011-01-31 05:03:45809<div class="paragraph"><p>to "push" those commits to the shared repository. If someone else has
Junio C Hamano1aa40d22010-01-21 17:46:43810updated the repository more recently, <em>git push</em>, like <em>cvs commit</em>, will
Junio C Hamanodfccbb02008-05-26 01:16:14811complain, in which case you must pull any changes before attempting the
Junio C Hamanoba4b9282008-07-06 05:20:31812push again.</p></div>
Junio C Hamano103b5722011-01-31 05:03:45813<div class="paragraph"><p>In the <em>git push</em> command above we specify the name of the remote branch
Junio C Hamano61525f92014-01-17 22:46:49814to update (<tt>master</tt>). If we leave that out, <em>git push</em> tries to update
Junio C Hamanodfccbb02008-05-26 01:16:14815any branches in the remote repository that have the same name as a branch
Junio C Hamanoba4b9282008-07-06 05:20:31816in the local repository. So the last <em>push</em> can be done with either of:</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14817<div class="listingblock">
818<div class="content">
Junio C Hamano61525f92014-01-17 22:46:49819<pre><tt>$ git push origin
820$ git push foo.com:/pub/project.git/</tt></pre>
Junio C Hamanodfccbb02008-05-26 01:16:14821</div></div>
Junio C Hamano103b5722011-01-31 05:03:45822<div class="paragraph"><p>as long as the shared repository does not have any branches
Junio C Hamano61525f92014-01-17 22:46:49823other than <tt>master</tt>.</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14824</div>
Junio C Hamano9d971152012-12-19 00:43:11825</div>
826<div class="sect1">
Junio C Hamanoba4b9282008-07-06 05:20:31827<h2 id="_setting_up_a_shared_repository">Setting Up a Shared Repository</h2>
Junio C Hamanodfccbb02008-05-26 01:16:14828<div class="sectionbody">
Junio C Hamano076ffcc2013-02-06 05:13:21829<div class="paragraph"><p>We assume you have already created a Git repository for your project,
Junio C Hamanofce7c7e2008-07-02 03:06:38830possibly created from scratch or from a tarball (see
Junio C Hamanoa28a9202012-06-21 07:08:23831<a href="gittutorial.html">gittutorial(7)</a>), or imported from an already existing CVS
Junio C Hamanoba4b9282008-07-06 05:20:31832repository (see the next section).</p></div>
Junio C Hamano103b5722011-01-31 05:03:45833<div class="paragraph"><p>Assume your existing repo is at /home/alice/myproject. Create a new "bare"
Junio C Hamanodfccbb02008-05-26 01:16:14834repository (a repository without a working tree) and fetch your project into
Junio C Hamanoba4b9282008-07-06 05:20:31835it:</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14836<div class="listingblock">
837<div class="content">
Junio C Hamano61525f92014-01-17 22:46:49838<pre><tt>$ mkdir /pub/my-repo.git
Junio C Hamanodfccbb02008-05-26 01:16:14839$ cd /pub/my-repo.git
840$ git --bare init --shared
Junio C Hamano61525f92014-01-17 22:46:49841$ git --bare fetch /home/alice/myproject master:master</tt></pre>
Junio C Hamanodfccbb02008-05-26 01:16:14842</div></div>
Junio C Hamano103b5722011-01-31 05:03:45843<div class="paragraph"><p>Next, give every team member read/write access to this repository. One
Junio C Hamanodfccbb02008-05-26 01:16:14844easy way to do this is to give all the team members ssh access to the
Junio C Hamano103b5722011-01-31 05:03:45845machine where the repository is hosted. If you don&#8217;t want to give them a
Junio C Hamanodfccbb02008-05-26 01:16:14846full shell on the machine, there is a restricted shell which only allows
Junio C Hamano076ffcc2013-02-06 05:13:21847users to do Git pushes and pulls; see <a href="git-shell.html">git-shell(1)</a>.</p></div>
Junio C Hamano103b5722011-01-31 05:03:45848<div class="paragraph"><p>Put all the committers in the same group, and make the repository
Junio C Hamanoba4b9282008-07-06 05:20:31849writable by that group:</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14850<div class="listingblock">
851<div class="content">
Junio C Hamano61525f92014-01-17 22:46:49852<pre><tt>$ chgrp -R $group /pub/my-repo.git</tt></pre>
Junio C Hamanodfccbb02008-05-26 01:16:14853</div></div>
Junio C Hamano103b5722011-01-31 05:03:45854<div class="paragraph"><p>Make sure committers have a umask of at most 027, so that the directories
Junio C Hamanoba4b9282008-07-06 05:20:31855they create are writable and searchable by other group members.</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14856</div>
Junio C Hamano9d971152012-12-19 00:43:11857</div>
858<div class="sect1">
Junio C Hamanoba4b9282008-07-06 05:20:31859<h2 id="_importing_a_cvs_archive">Importing a CVS archive</h2>
Junio C Hamanodfccbb02008-05-26 01:16:14860<div class="sectionbody">
Junio C Hamano103b5722011-01-31 05:03:45861<div class="paragraph"><p>First, install version 2.1 or higher of cvsps from
Junio C Hamanodfccbb02008-05-26 01:16:14862<a href="http://www.cobite.com/cvsps/">http://www.cobite.com/cvsps/</a> and make
863sure it is in your path. Then cd to a checked out CVS working directory
Junio C Hamanoa28a9202012-06-21 07:08:23864of the project you are interested in and run <a href="git-cvsimport.html">git-cvsimport(1)</a>:</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14865<div class="listingblock">
866<div class="content">
Junio C Hamano61525f92014-01-17 22:46:49867<pre><tt>$ git cvsimport -C &lt;destination&gt; &lt;module&gt;</tt></pre>
Junio C Hamanodfccbb02008-05-26 01:16:14868</div></div>
Junio C Hamano076ffcc2013-02-06 05:13:21869<div class="paragraph"><p>This puts a Git archive of the named CVS module in the directory
Junio C Hamanoba4b9282008-07-06 05:20:31870&lt;destination&gt;, which will be created if necessary.</p></div>
Junio C Hamano103b5722011-01-31 05:03:45871<div class="paragraph"><p>The import checks out from CVS every revision of every file. Reportedly
Junio C Hamanodfccbb02008-05-26 01:16:14872cvsimport can average some twenty revisions per second, so for a
873medium-sized project this should not take more than a couple of minutes.
Junio C Hamanoba4b9282008-07-06 05:20:31874Larger projects or remote repositories may take longer.</p></div>
Junio C Hamano61525f92014-01-17 22:46:49875<div class="paragraph"><p>The main trunk is stored in the Git branch named <tt>origin</tt>, and additional
Junio C Hamano076ffcc2013-02-06 05:13:21876CVS branches are stored in Git branches with the same names. The most
Junio C Hamano61525f92014-01-17 22:46:49877recent version of the main trunk is also left checked out on the <tt>master</tt>
Junio C Hamanoba4b9282008-07-06 05:20:31878branch, so you can start adding your own changes right away.</p></div>
Junio C Hamano103b5722011-01-31 05:03:45879<div class="paragraph"><p>The import is incremental, so if you call it again next month it will
Junio C Hamanodfccbb02008-05-26 01:16:14880fetch any CVS updates that have been made in the meantime. For this to
881work, you must not modify the imported branches; instead, create new
882branches for your own changes, and merge in the imported branches as
Junio C Hamanoba4b9282008-07-06 05:20:31883necessary.</p></div>
Junio C Hamano103b5722011-01-31 05:03:45884<div class="paragraph"><p>If you want a shared repository, you will need to make a bare clone
Junio C Hamanoba4b9282008-07-06 05:20:31885of the imported directory, as described above. Then treat the imported
886directory as another development clone for purposes of merging
887incremental imports.</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14888</div>
Junio C Hamano9d971152012-12-19 00:43:11889</div>
890<div class="sect1">
Junio C Hamanoba4b9282008-07-06 05:20:31891<h2 id="_advanced_shared_repository_management">Advanced Shared Repository Management</h2>
Junio C Hamanodfccbb02008-05-26 01:16:14892<div class="sectionbody">
Junio C Hamano103b5722011-01-31 05:03:45893<div class="paragraph"><p>Git allows you to specify scripts called "hooks" to be run at certain
Junio C Hamanodfccbb02008-05-26 01:16:14894points. You can use these, for example, to send all commits to the shared
Junio C Hamanoa28a9202012-06-21 07:08:23895repository to a mailing list. See <a href="githooks.html">githooks(5)</a>.</p></div>
Junio C Hamano103b5722011-01-31 05:03:45896<div class="paragraph"><p>You can enforce finer grained permissions using update hooks. See
Junio C Hamanoe6f28d02013-09-17 21:34:00897<a href="howto/update-hook-example.html">Controlling access to branches using
Junio C Hamanoba4b9282008-07-06 05:20:31898update hooks</a>.</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14899</div>
Junio C Hamano9d971152012-12-19 00:43:11900</div>
901<div class="sect1">
Junio C Hamano076ffcc2013-02-06 05:13:21902<h2 id="_providing_cvs_access_to_a_git_repository">Providing CVS Access to a Git Repository</h2>
Junio C Hamanodfccbb02008-05-26 01:16:14903<div class="sectionbody">
Junio C Hamano076ffcc2013-02-06 05:13:21904<div class="paragraph"><p>It is also possible to provide true CVS access to a Git repository, so
Junio C Hamanoa28a9202012-06-21 07:08:23905that developers can still use CVS; see <a href="git-cvsserver.html">git-cvsserver(1)</a> for
Junio C Hamanoba4b9282008-07-06 05:20:31906details.</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14907</div>
Junio C Hamano9d971152012-12-19 00:43:11908</div>
909<div class="sect1">
Junio C Hamanoba4b9282008-07-06 05:20:31910<h2 id="_alternative_development_models">Alternative Development Models</h2>
Junio C Hamanodfccbb02008-05-26 01:16:14911<div class="sectionbody">
Junio C Hamano103b5722011-01-31 05:03:45912<div class="paragraph"><p>CVS users are accustomed to giving a group of developers commit access to
Junio C Hamano076ffcc2013-02-06 05:13:21913a common repository. As we&#8217;ve seen, this is also possible with Git.
914However, the distributed nature of Git allows other development models,
Junio C Hamanodfccbb02008-05-26 01:16:14915and you may want to first consider whether one of them might be a better
Junio C Hamanoba4b9282008-07-06 05:20:31916fit for your project.</p></div>
Junio C Hamano103b5722011-01-31 05:03:45917<div class="paragraph"><p>For example, you can choose a single person to maintain the project&#8217;s
Junio C Hamanodfccbb02008-05-26 01:16:14918primary public repository. Other developers then clone this repository
919and each work in their own clone. When they have a series of changes that
Junio C Hamano103b5722011-01-31 05:03:45920they&#8217;re happy with, they ask the maintainer to pull from the branch
Junio C Hamanodfccbb02008-05-26 01:16:14921containing the changes. The maintainer reviews their changes and pulls
922them into the primary repository, which other developers pull from as
923necessary to stay coordinated. The Linux kernel and other projects use
Junio C Hamanoba4b9282008-07-06 05:20:31924variants of this model.</p></div>
Junio C Hamano103b5722011-01-31 05:03:45925<div class="paragraph"><p>With a small group, developers may just pull changes from each other&#8217;s
Junio C Hamanoba4b9282008-07-06 05:20:31926repositories without the need for a central maintainer.</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14927</div>
Junio C Hamano9d971152012-12-19 00:43:11928</div>
929<div class="sect1">
Junio C Hamanoba4b9282008-07-06 05:20:31930<h2 id="_see_also">SEE ALSO</h2>
Junio C Hamanodfccbb02008-05-26 01:16:14931<div class="sectionbody">
Junio C Hamanoa28a9202012-06-21 07:08:23932<div class="paragraph"><p><a href="gittutorial.html">gittutorial(7)</a>,
933<a href="gittutorial-2.html">gittutorial-2(7)</a>,
934<a href="gitcore-tutorial.html">gitcore-tutorial(7)</a>,
935<a href="gitglossary.html">gitglossary(7)</a>,
Junio C Hamanodfccbb02008-05-26 01:16:14936<a href="everyday.html">Everyday Git</a>,
Junio C Hamano103b5722011-01-31 05:03:45937<a href="user-manual.html">The Git User&#8217;s Manual</a></p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14938</div>
Junio C Hamano9d971152012-12-19 00:43:11939</div>
940<div class="sect1">
Junio C Hamanoba4b9282008-07-06 05:20:31941<h2 id="_git">GIT</h2>
Junio C Hamanodfccbb02008-05-26 01:16:14942<div class="sectionbody">
Junio C Hamanoa28a9202012-06-21 07:08:23943<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite.</p></div>
Junio C Hamanodfccbb02008-05-26 01:16:14944</div>
Junio C Hamano7bd050f2011-09-22 06:32:22945</div>
Junio C Hamano9d971152012-12-19 00:43:11946</div>
Junio C Hamano7bd050f2011-09-22 06:32:22947<div id="footnotes"><hr /></div>
Junio C Hamanodfccbb02008-05-26 01:16:14948<div id="footer">
949<div id="footer-text">
Junio C Hamanobe244802014-04-25 18:21:38950Last updated 2014-03-14 14:59:49 PDT
Junio C Hamanodfccbb02008-05-26 01:16:14951</div>
952</div>
953</body>
954</html>