Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: docs/html/depot_tools_tutorial.html

Issue 259863004: Move docs folder to man. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « docs/html/depot_tools.html ('k') | docs/html/git-freeze.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <!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="application/xhtml+xml; charset=UTF-8" / >
6 <meta name="generator" content="AsciiDoc 8.6.9" />
7 <title>depot_tools_tutorial(7)</title>
8 <style type="text/css">
9 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */
10
11 /* Default font. */
12 body {
13 font-family: Georgia,serif;
14 }
15
16 /* Title font. */
17 h1, h2, h3, h4, h5, h6,
18 div.title, caption.title,
19 thead, p.table.header,
20 #toctitle,
21 #author, #revnumber, #revdate, #revremark,
22 #footer {
23 font-family: Arial,Helvetica,sans-serif;
24 }
25
26 body {
27 margin: 1em 5% 1em 5%;
28 }
29
30 a {
31 color: blue;
32 text-decoration: underline;
33 }
34 a:visited {
35 color: fuchsia;
36 }
37
38 em {
39 font-style: italic;
40 color: navy;
41 }
42
43 strong {
44 font-weight: bold;
45 color: #083194;
46 }
47
48 h1, h2, h3, h4, h5, h6 {
49 color: #527bbd;
50 margin-top: 1.2em;
51 margin-bottom: 0.5em;
52 line-height: 1.3;
53 }
54
55 h1, h2, h3 {
56 border-bottom: 2px solid silver;
57 }
58 h2 {
59 padding-top: 0.5em;
60 }
61 h3 {
62 float: left;
63 }
64 h3 + * {
65 clear: left;
66 }
67 h5 {
68 font-size: 1.0em;
69 }
70
71 div.sectionbody {
72 margin-left: 0;
73 }
74
75 hr {
76 border: 1px solid silver;
77 }
78
79 p {
80 margin-top: 0.5em;
81 margin-bottom: 0.5em;
82 }
83
84 ul, ol, li > p {
85 margin-top: 0;
86 }
87 ul > li { color: #aaa; }
88 ul > li > * { color: black; }
89
90 .monospaced, code, pre {
91 font-family: "Courier New", Courier, monospace;
92 font-size: inherit;
93 color: navy;
94 padding: 0;
95 margin: 0;
96 }
97 pre {
98 white-space: pre-wrap;
99 }
100
101 #author {
102 color: #527bbd;
103 font-weight: bold;
104 font-size: 1.1em;
105 }
106 #email {
107 }
108 #revnumber, #revdate, #revremark {
109 }
110
111 #footer {
112 font-size: small;
113 border-top: 2px solid silver;
114 padding-top: 0.5em;
115 margin-top: 4.0em;
116 }
117 #footer-text {
118 float: left;
119 padding-bottom: 0.5em;
120 }
121 #footer-badges {
122 float: right;
123 padding-bottom: 0.5em;
124 }
125
126 #preamble {
127 margin-top: 1.5em;
128 margin-bottom: 1.5em;
129 }
130 div.imageblock, div.exampleblock, div.verseblock,
131 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
132 div.admonitionblock {
133 margin-top: 1.0em;
134 margin-bottom: 1.5em;
135 }
136 div.admonitionblock {
137 margin-top: 2.0em;
138 margin-bottom: 2.0em;
139 margin-right: 10%;
140 color: #606060;
141 }
142
143 div.content { /* Block element content. */
144 padding: 0;
145 }
146
147 /* Block element titles. */
148 div.title, caption.title {
149 color: #527bbd;
150 font-weight: bold;
151 text-align: left;
152 margin-top: 1.0em;
153 margin-bottom: 0.5em;
154 }
155 div.title + * {
156 margin-top: 0;
157 }
158
159 td div.title:first-child {
160 margin-top: 0.0em;
161 }
162 div.content div.title:first-child {
163 margin-top: 0.0em;
164 }
165 div.content + div.title {
166 margin-top: 0.0em;
167 }
168
169 div.sidebarblock > div.content {
170 background: #ffffee;
171 border: 1px solid #dddddd;
172 border-left: 4px solid #f0f0f0;
173 padding: 0.5em;
174 }
175
176 div.listingblock > div.content {
177 border: 1px solid #dddddd;
178 border-left: 5px solid #f0f0f0;
179 background: #f8f8f8;
180 padding: 0.5em;
181 }
182
183 div.quoteblock, div.verseblock {
184 padding-left: 1.0em;
185 margin-left: 1.0em;
186 margin-right: 10%;
187 border-left: 5px solid #f0f0f0;
188 color: #888;
189 }
190
191 div.quoteblock > div.attribution {
192 padding-top: 0.5em;
193 text-align: right;
194 }
195
196 div.verseblock > pre.content {
197 font-family: inherit;
198 font-size: inherit;
199 }
200 div.verseblock > div.attribution {
201 padding-top: 0.75em;
202 text-align: left;
203 }
204 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
205 div.verseblock + div.attribution {
206 text-align: left;
207 }
208
209 div.admonitionblock .icon {
210 vertical-align: top;
211 font-size: 1.1em;
212 font-weight: bold;
213 text-decoration: underline;
214 color: #527bbd;
215 padding-right: 0.5em;
216 }
217 div.admonitionblock td.content {
218 padding-left: 0.5em;
219 border-left: 3px solid #dddddd;
220 }
221
222 div.exampleblock > div.content {
223 border-left: 3px solid #dddddd;
224 padding-left: 0.5em;
225 }
226
227 div.imageblock div.content { padding-left: 0; }
228 span.image img { border-style: none; vertical-align: text-bottom; }
229 a.image:visited { color: white; }
230
231 dl {
232 margin-top: 0.8em;
233 margin-bottom: 0.8em;
234 }
235 dt {
236 margin-top: 0.5em;
237 margin-bottom: 0;
238 font-style: normal;
239 color: navy;
240 }
241 dd > *:first-child {
242 margin-top: 0.1em;
243 }
244
245 ul, ol {
246 list-style-position: outside;
247 }
248 ol.arabic {
249 list-style-type: decimal;
250 }
251 ol.loweralpha {
252 list-style-type: lower-alpha;
253 }
254 ol.upperalpha {
255 list-style-type: upper-alpha;
256 }
257 ol.lowerroman {
258 list-style-type: lower-roman;
259 }
260 ol.upperroman {
261 list-style-type: upper-roman;
262 }
263
264 div.compact ul, div.compact ol,
265 div.compact p, div.compact p,
266 div.compact div, div.compact div {
267 margin-top: 0.1em;
268 margin-bottom: 0.1em;
269 }
270
271 tfoot {
272 font-weight: bold;
273 }
274 td > div.verse {
275 white-space: pre;
276 }
277
278 div.hdlist {
279 margin-top: 0.8em;
280 margin-bottom: 0.8em;
281 }
282 div.hdlist tr {
283 padding-bottom: 15px;
284 }
285 dt.hdlist1.strong, td.hdlist1.strong {
286 font-weight: bold;
287 }
288 td.hdlist1 {
289 vertical-align: top;
290 font-style: normal;
291 padding-right: 0.8em;
292 color: navy;
293 }
294 td.hdlist2 {
295 vertical-align: top;
296 }
297 div.hdlist.compact tr {
298 margin: 0;
299 padding-bottom: 0;
300 }
301
302 .comment {
303 background: yellow;
304 }
305
306 .footnote, .footnoteref {
307 font-size: 0.8em;
308 }
309
310 span.footnote, span.footnoteref {
311 vertical-align: super;
312 }
313
314 #footnotes {
315 margin: 20px 0 20px 0;
316 padding: 7px 0 0 0;
317 }
318
319 #footnotes div.footnote {
320 margin: 0 0 5px 0;
321 }
322
323 #footnotes hr {
324 border: none;
325 border-top: 1px solid silver;
326 height: 1px;
327 text-align: left;
328 margin-left: 0;
329 width: 20%;
330 min-width: 100px;
331 }
332
333 div.colist td {
334 padding-right: 0.5em;
335 padding-bottom: 0.3em;
336 vertical-align: top;
337 }
338 div.colist td img {
339 margin-top: 0.3em;
340 }
341
342 @media print {
343 #footer-badges { display: none; }
344 }
345
346 #toc {
347 margin-bottom: 2.5em;
348 }
349
350 #toctitle {
351 color: #527bbd;
352 font-size: 1.1em;
353 font-weight: bold;
354 margin-top: 1.0em;
355 margin-bottom: 0.1em;
356 }
357
358 div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
359 margin-top: 0;
360 margin-bottom: 0;
361 }
362 div.toclevel2 {
363 margin-left: 2em;
364 font-size: 0.9em;
365 }
366 div.toclevel3 {
367 margin-left: 4em;
368 font-size: 0.9em;
369 }
370 div.toclevel4 {
371 margin-left: 6em;
372 font-size: 0.9em;
373 }
374
375 span.aqua { color: aqua; }
376 span.black { color: black; }
377 span.blue { color: blue; }
378 span.fuchsia { color: fuchsia; }
379 span.gray { color: gray; }
380 span.green { color: green; }
381 span.lime { color: lime; }
382 span.maroon { color: maroon; }
383 span.navy { color: navy; }
384 span.olive { color: olive; }
385 span.purple { color: purple; }
386 span.red { color: red; }
387 span.silver { color: silver; }
388 span.teal { color: teal; }
389 span.white { color: white; }
390 span.yellow { color: yellow; }
391
392 span.aqua-background { background: aqua; }
393 span.black-background { background: black; }
394 span.blue-background { background: blue; }
395 span.fuchsia-background { background: fuchsia; }
396 span.gray-background { background: gray; }
397 span.green-background { background: green; }
398 span.lime-background { background: lime; }
399 span.maroon-background { background: maroon; }
400 span.navy-background { background: navy; }
401 span.olive-background { background: olive; }
402 span.purple-background { background: purple; }
403 span.red-background { background: red; }
404 span.silver-background { background: silver; }
405 span.teal-background { background: teal; }
406 span.white-background { background: white; }
407 span.yellow-background { background: yellow; }
408
409 span.big { font-size: 2em; }
410 span.small { font-size: 0.6em; }
411
412 span.underline { text-decoration: underline; }
413 span.overline { text-decoration: overline; }
414 span.line-through { text-decoration: line-through; }
415
416 div.unbreakable { page-break-inside: avoid; }
417
418
419 /*
420 * xhtml11 specific
421 *
422 * */
423
424 div.tableblock {
425 margin-top: 1.0em;
426 margin-bottom: 1.5em;
427 }
428 div.tableblock > table {
429 border: 3px solid #527bbd;
430 }
431 thead, p.table.header {
432 font-weight: bold;
433 color: #527bbd;
434 }
435 p.table {
436 margin-top: 0;
437 }
438 /* Because the table frame attribute is overriden by CSS in most browsers. */
439 div.tableblock > table[frame="void"] {
440 border-style: none;
441 }
442 div.tableblock > table[frame="hsides"] {
443 border-left-style: none;
444 border-right-style: none;
445 }
446 div.tableblock > table[frame="vsides"] {
447 border-top-style: none;
448 border-bottom-style: none;
449 }
450
451
452 /*
453 * html5 specific
454 *
455 * */
456
457 table.tableblock {
458 margin-top: 1.0em;
459 margin-bottom: 1.5em;
460 }
461 thead, p.tableblock.header {
462 font-weight: bold;
463 color: #527bbd;
464 }
465 p.tableblock {
466 margin-top: 0;
467 }
468 table.tableblock {
469 border-width: 3px;
470 border-spacing: 0px;
471 border-style: solid;
472 border-color: #527bbd;
473 border-collapse: collapse;
474 }
475 th.tableblock, td.tableblock {
476 border-width: 1px;
477 padding: 4px;
478 border-style: solid;
479 border-color: #527bbd;
480 }
481
482 table.tableblock.frame-topbot {
483 border-left-style: hidden;
484 border-right-style: hidden;
485 }
486 table.tableblock.frame-sides {
487 border-top-style: hidden;
488 border-bottom-style: hidden;
489 }
490 table.tableblock.frame-none {
491 border-style: hidden;
492 }
493
494 th.tableblock.halign-left, td.tableblock.halign-left {
495 text-align: left;
496 }
497 th.tableblock.halign-center, td.tableblock.halign-center {
498 text-align: center;
499 }
500 th.tableblock.halign-right, td.tableblock.halign-right {
501 text-align: right;
502 }
503
504 th.tableblock.valign-top, td.tableblock.valign-top {
505 vertical-align: top;
506 }
507 th.tableblock.valign-middle, td.tableblock.valign-middle {
508 vertical-align: middle;
509 }
510 th.tableblock.valign-bottom, td.tableblock.valign-bottom {
511 vertical-align: bottom;
512 }
513
514
515 /*
516 * manpage specific
517 *
518 * */
519
520 body.manpage h1 {
521 padding-top: 0.5em;
522 padding-bottom: 0.5em;
523 border-top: 2px solid silver;
524 border-bottom: 2px solid silver;
525 }
526 body.manpage h2 {
527 border-style: none;
528 }
529 body.manpage div.sectionbody {
530 margin-left: 3em;
531 }
532
533 @media print {
534 body.manpage div#toc { display: none; }
535 }
536
537
538 div.listingblock > div.content {
539 background: rgb(28, 28, 28);
540 }
541
542 div.listingblock > div > pre > code {
543 color: rgb(187, 187, 187);
544 }
545 </style>
546 <script type="text/javascript">
547 /*<![CDATA[*/
548 var asciidoc = { // Namespace.
549
550 /////////////////////////////////////////////////////////////////////
551 // Table Of Contents generator
552 /////////////////////////////////////////////////////////////////////
553
554 /* Author: Mihai Bazon, September 2002
555 * http://students.infoiasi.ro/~mishoo
556 *
557 * Table Of Content generator
558 * Version: 0.4
559 *
560 * Feel free to use this script under the terms of the GNU General Public
561 * License, as long as you do not remove or alter this notice.
562 */
563
564 /* modified by Troy D. Hanson, September 2006. License: GPL */
565 /* modified by Stuart Rackham, 2006, 2009. License: GPL */
566
567 // toclevels = 1..4.
568 toc: function (toclevels) {
569
570 function getText(el) {
571 var text = "";
572 for (var i = el.firstChild; i != null; i = i.nextSibling) {
573 if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
574 text += i.data;
575 else if (i.firstChild != null)
576 text += getText(i);
577 }
578 return text;
579 }
580
581 function TocEntry(el, text, toclevel) {
582 this.element = el;
583 this.text = text;
584 this.toclevel = toclevel;
585 }
586
587 function tocEntries(el, toclevels) {
588 var result = new Array;
589 var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
590 // Function that scans the DOM tree for header elements (the DOM2
591 // nodeIterator API would be a better technique but not supported by all
592 // browsers).
593 var iterate = function (el) {
594 for (var i = el.firstChild; i != null; i = i.nextSibling) {
595 if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
596 var mo = re.exec(i.tagName);
597 if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
598 result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
599 }
600 iterate(i);
601 }
602 }
603 }
604 iterate(el);
605 return result;
606 }
607
608 var toc = document.getElementById("toc");
609 if (!toc) {
610 return;
611 }
612
613 // Delete existing TOC entries in case we're reloading the TOC.
614 var tocEntriesToRemove = [];
615 var i;
616 for (i = 0; i < toc.childNodes.length; i++) {
617 var entry = toc.childNodes[i];
618 if (entry.nodeName.toLowerCase() == 'div'
619 && entry.getAttribute("class")
620 && entry.getAttribute("class").match(/^toclevel/))
621 tocEntriesToRemove.push(entry);
622 }
623 for (i = 0; i < tocEntriesToRemove.length; i++) {
624 toc.removeChild(tocEntriesToRemove[i]);
625 }
626
627 // Rebuild TOC entries.
628 var entries = tocEntries(document.getElementById("content"), toclevels);
629 for (var i = 0; i < entries.length; ++i) {
630 var entry = entries[i];
631 if (entry.element.id == "")
632 entry.element.id = "_toc_" + i;
633 var a = document.createElement("a");
634 a.href = "#" + entry.element.id;
635 a.appendChild(document.createTextNode(entry.text));
636 var div = document.createElement("div");
637 div.appendChild(a);
638 div.className = "toclevel" + entry.toclevel;
639 toc.appendChild(div);
640 }
641 if (entries.length == 0)
642 toc.parentNode.removeChild(toc);
643 },
644
645
646 /////////////////////////////////////////////////////////////////////
647 // Footnotes generator
648 /////////////////////////////////////////////////////////////////////
649
650 /* Based on footnote generation code from:
651 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
652 */
653
654 footnotes: function () {
655 // Delete existing footnote entries in case we're reloading the footnodes.
656 var i;
657 var noteholder = document.getElementById("footnotes");
658 if (!noteholder) {
659 return;
660 }
661 var entriesToRemove = [];
662 for (i = 0; i < noteholder.childNodes.length; i++) {
663 var entry = noteholder.childNodes[i];
664 if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
665 entriesToRemove.push(entry);
666 }
667 for (i = 0; i < entriesToRemove.length; i++) {
668 noteholder.removeChild(entriesToRemove[i]);
669 }
670
671 // Rebuild footnote entries.
672 var cont = document.getElementById("content");
673 var spans = cont.getElementsByTagName("span");
674 var refs = {};
675 var n = 0;
676 for (i=0; i<spans.length; i++) {
677 if (spans[i].className == "footnote") {
678 n++;
679 var note = spans[i].getAttribute("data-note");
680 if (!note) {
681 // Use [\s\S] in place of . so multi-line matches work.
682 // Because JavaScript has no s (dotall) regex flag.
683 note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
684 spans[i].innerHTML =
685 "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
686 "' title='View footnote' class='footnote'>" + n + "</a>]";
687 spans[i].setAttribute("data-note", note);
688 }
689 noteholder.innerHTML +=
690 "<div class='footnote' id='_footnote_" + n + "'>" +
691 "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
692 n + "</a>. " + note + "</div>";
693 var id =spans[i].getAttribute("id");
694 if (id != null) refs["#"+id] = n;
695 }
696 }
697 if (n == 0)
698 noteholder.parentNode.removeChild(noteholder);
699 else {
700 // Process footnoterefs.
701 for (i=0; i<spans.length; i++) {
702 if (spans[i].className == "footnoteref") {
703 var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
704 href = href.match(/#.*/)[0]; // Because IE return full URL.
705 n = refs[href];
706 spans[i].innerHTML =
707 "[<a href='#_footnote_" + n +
708 "' title='View footnote' class='footnote'>" + n + "</a>]";
709 }
710 }
711 }
712 },
713
714 install: function(toclevels) {
715 var timerId;
716
717 function reinstall() {
718 asciidoc.footnotes();
719 if (toclevels) {
720 asciidoc.toc(toclevels);
721 }
722 }
723
724 function reinstallAndRemoveTimer() {
725 clearInterval(timerId);
726 reinstall();
727 }
728
729 timerId = setInterval(reinstall, 500);
730 if (document.addEventListener)
731 document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false );
732 else
733 window.onload = reinstallAndRemoveTimer;
734 }
735
736 }
737 asciidoc.install();
738 /*]]>*/
739 </script>
740 </head>
741 <body class="manpage">
742 <div id="header">
743 <h1>
744 depot_tools_tutorial(7) Manual Page
745 </h1>
746 <h2>NAME</h2>
747 <div class="sectionbody">
748 <p>depot_tools_tutorial -
749 A tutorial introduction to the Chromium depot_tools git extensions.
750 </p>
751 </div>
752 </div>
753 <div id="content">
754 <div class="sect1">
755 <h2 id="_description">DESCRIPTION</h2>
756 <div class="sectionbody">
757 <div class="paragraph"><p>The Chromium <a href="depot_tools.html">depot_tools(7) </a> suite contains many git workflow-enhancing
758 tools which are designed to work together to enable anyone to wrangle the
759 Chromium codebase expertly. This tutorial explains how to do development on
760 Chromium using these tools. This will cover:</p></div>
761 <div class="ulist"><ul>
762 <li>
763 <p>
764 <a href="#_setting_up">Setting up</a>
765 </p>
766 </li>
767 <li>
768 <p>
769 <a href="#_getting_the_code">Getting the code</a>
770 </p>
771 </li>
772 <li>
773 <p>
774 <a href="#_tl_dr">TL;DR</a>
775 </p>
776 </li>
777 <li>
778 <p>
779 <a href="#_creating_uploading_a_cl">Creating / Uploading a CL</a>
780 </p>
781 </li>
782 <li>
783 <p>
784 <a href="#_updating_the_code">Updating the code</a>
785 </p>
786 </li>
787 <li>
788 <p>
789 <a href="#_managing_multiple_cls">Managing multiple CLs</a>
790 </p>
791 </li>
792 <li>
793 <p>
794 <a href="#_managing_dependent_cls">Managing dependent CLs</a>
795 </p>
796 </li>
797 <li>
798 <p>
799 <a href="#_example_walkthrough">Example Walkthrough</a>
800 </p>
801 </li>
802 </ul></div>
803 <div class="paragraph"><p>Please refer to the manpages (or <code>--help</code> o utput) for details about any of the
804 commands mentioned in this tutorial.</p></div>
805 <div class="admonitionblock">
806 <table><tr>
807 <td class="icon">
808 <div class="title">Note</div>
809 </td>
810 <td class="content">If your platform does not support manpages (or you prefer so mething a bit more
811 expressive than plain text) you can find all documentation in <em>html</em> form in the
812 <code>[DEPOT_TOOLS]/docs/html</code> folder.</td>
813 </tr></table>
814 </div>
815 <div class="sect2">
816 <h3 id="_prerequisites">PREREQUISITES</h3>
817 <div class="paragraph"><p>This tutorial assumes basic familiarity with git termi nology and concepts. If you
818 need to brush up on these, the following are very good resources:</p></div>
819 <div class="ulist"><ul>
820 <li>
821 <p>
822 <a href="http://think-like-a-git.net/">Think like (a) Git</a> - A lighthearted
823 overview of git. If you&#8217;re sorta-familiar with git, but not <em>comforta ble</em> with
824 it, then give this a look.
825 </p>
826 </li>
827 <li>
828 <p>
829 <a href="http://gitimmersion.com/">Git Immersion Tutorial</a> - An in-depth git
830 tutorial.
831 </p>
832 </li>
833 <li>
834 <p>
835 <a href="http://pcottle.github.io/learnGitBranching">pcottle&#8217;s Visual Git
836 Branching</a> - An excellent interactive/graphical demo on how git handles
837 commits, branches, and shows the operations git performs on them.
838 </p>
839 </li>
840 <li>
841 <p>
842 <a href="http://git-scm.com/book">Pro Git book</a> - &#8220;The&#8221; book for learning git
843 from basics to advanced concepts. A bit dry, but very through.
844 </p>
845 </li>
846 </ul></div>
847 <div class="paragraph"><p>If you&#8217;ve tried these out and are still having s ome trouble getting started,
848 there are <em>many</em> other resources online which should help. If you&#8217;r e <em>really</em>
849 <strong><em>really</em></strong> stuck, then chat up one of the Chromium infrast ructure team
850 members for some pointers.</p></div>
851 <div class="dlist"><dl>
852 <dt class="hdlist1">
853 Litmus Test
854 </dt>
855 <dd>
856 <p>
857 If you know what <code>git add</code>, <code>git status</code>, <code>git comm it</code> do and you know
858 <em>essentially</em> what <code>git rebase</code> does, then you should know e nough to follow
859 along.
860 </p>
861 </dd>
862 </dl></div>
863 </div>
864 </div>
865 </div>
866 <div class="sect1">
867 <h2 id="_setting_up">SETTING UP</h2>
868 <div class="sectionbody">
869 <div class="sect2">
870 <h3 id="_get_depot_tools">GET DEPOT TOOLS</h3>
871 <div class="sect3">
872 <h4 id="_linux_mac">LINUX / MAC</h4>
873 <div class="paragraph"><p>Clone the <em>depot_tools</em> repository:</p></div>
874 <div class="listingblock">
875 <div class="content">
876 <pre><code><strong><span class="white">$ git clone https://chromium.googlesource .com/chromium/tools/depot_tools</span></strong></code></pre>
877 </div></div>
878 <div class="paragraph"><p>Add <em>depot_tools</em> to the <em>end</em> of your P ATH and MANPATH (you will probably want
879 to put this in your <code>~/.bashrc</code> or <code>~/.zshrc</code>). Assuming y ou cloned
880 <em>depot_tools</em> to <code>/path/to/depot_tools</code>:</p></div>
881 <div class="listingblock">
882 <div class="content">
883 <pre><code><strong><span class="white">$ export PATH=$PATH:/path/to/depot_tools< /span></strong>
884 <strong><span class="white">$ export MANPATH=$MANPATH:/path/to/depot_tools/docs< /span></strong> <b>&lt;1&gt;</b></code></pre>
885 </div></div>
886 <div class="colist arabic"><ol>
887 <li>
888 <p>
889 Observe that this path is <code>depot_tools/</code><strong><code>docs</code></st rong>.
890 </p>
891 </li>
892 </ol></div>
893 </div>
894 <div class="sect3">
895 <h4 id="_windows">WINDOWS</h4>
896 <div class="paragraph"><p>Download the <em>depot_tools</em>
897 <a href="https://src.chromium.org/svn/trunk/tools/depot_tools.zip">bundle</a> an d
898 extract it somewhere.</p></div>
899 <div class="admonitionblock">
900 <table><tr>
901 <td class="icon">
902 <div class="title">Warning</div>
903 </td>
904 <td class="content"><strong>DO NOT</strong> use drag-n-drop or copy-n-paste extr act from Explorer, this will not
905 extract the hidden &#8220;.git&#8221; folder which is necessary for <em>depot_to ols</em> to
906 autoupdate itself. You can use &#8220;Extract all&#8230;&#8221; from the context menu though.</td>
907 </tr></table>
908 </div>
909 <div class="paragraph"><p>Add <em>depot_tools</em> to the <em>end</em> of your P ATH. Assuming you unzipped the
910 bundle to <code>C:\workspace\depot_tools</code>:</p></div>
911 <div class="dlist"><dl>
912 <dt class="hdlist1">
913 With Administrator access:
914 </dt>
915 <dd>
916 <p>
917 <strong>Control Panel &#8594; System and Security &#8594; System &#8594; Advan ced system settings</strong>
918 </p>
919 <div class="paragraph"><p>Modify the PATH system variable to include <code>C:\wo rkspace\depot_tools</code>.</p></div>
920 </dd>
921 <dt class="hdlist1">
922 Without Administrator access:
923 </dt>
924 <dd>
925 <p>
926 <strong>Control Panel &#8594; User Accounts &#8594; User Accounts &#8594; Chan ge my environment variables</strong>
927 </p>
928 <div class="paragraph"><p>Add a PATH user variable: <code>%PATH%;C:\workspace\de pot_tools</code>.</p></div>
929 </dd>
930 </dl></div>
931 <div class="paragraph"><p>From a <code>cmd.exe</code> shell, run the command <co de>gclient</code> (without arguments). On first
932 run, gclient will install all the Windows-specific bits needed to work with the
933 code, including msysgit and python.</p></div>
934 <div class="admonitionblock">
935 <table><tr>
936 <td class="icon">
937 <div class="title">Note</div>
938 </td>
939 <td class="content">
940 <div class="ulist"><ul>
941 <li>
942 <p>
943 If you run gclient from a non-cmd shell (e.g., cygwin, PowerShell), it
944 may appear to run properly, but msysgit, python, and other tools may not get
945 installed correctly.
946 </p>
947 </li>
948 <li>
949 <p>
950 If you see strange errors with the file system on the first run of gclient,
951 you may want to <a href="http://tortoisesvn.tigris.org/faq.html#cantmove2">dis able
952 Windows Indexing</a>.
953 </p>
954 </li>
955 <li>
956 <p>
957 If you are running Windows XP and see errors like &#8220;The system cannot execu te
958 the specified program&#8221;, try installing the
959 <a href="http://code.google.com/p/chromium/issues/detail?id=75886">&#8220;Micr osoft
960 Visual C++ 2008 Redistributable Package&#8221;</a>.
961 </p>
962 </li>
963 </ul></div>
964 </td>
965 </tr></table>
966 </div>
967 </div>
968 </div>
969 <div class="sect2">
970 <h3 id="_bootstrapping_configuration">BOOTSTRAPPING CONFIGURATION</h3>
971 <div class="paragraph"><p>If you have never used git before, you’ll need to set some global git
972 configurations; substitute your name and email address in the following
973 commands:</p></div>
974 <div class="listingblock">
975 <div class="content">
976 <pre><code><strong><span class="white">$ git config --global user.name &#8220;Jo hn Doe&#8221;</span></strong>
977 <strong><span class="white">$ git config --global user.email &#8220;jdoe@email.c om&#8221;</span></strong>
978 <strong><span class="white">$ git config --global core.autocrlf false</span></st rong>
979 <strong><span class="white">$ git config --global core.filemode false</span></st rong>
980 <strong><span class="white">$</span></strong> # and for fun!
981 <strong><span class="white">$ git config --global color.ui true</span></strong>< /code></pre>
982 </div></div>
983 </div>
984 </div>
985 </div>
986 <div class="sect1">
987 <h2 id="_tl_dr">TL;DR</h2>
988 <div class="sectionbody">
989 <div class="listingblock">
990 <div class="content">
991 <pre><code><strong><span class="white">$</span></strong> # get the code
992 <strong><span class="white">$</span></strong> # In an empty directory:
993 <strong><span class="white">$ fetch {chromium,blink,...}</span></strong>
994
995 <strong><span class="white">$</span></strong> # Update third_party repos and run pre-compile hooks
996 <strong><span class="white">$ gclient sync</span></strong>
997
998 <strong><span class="white">$</span></strong> # Make a new change and upload it for review
999 <strong><span class="white">$ git new-branch branchname</span></strong>
1000 <strong><span class="white">$</span></strong> # repeat: [edit, git add, git comm it]
1001 <strong><span class="white">$ git cl upload</span></strong>
1002
1003 <strong><span class="white">$</span></strong> # After change is reviewed, commit with the CQ
1004 <strong><span class="white">$ git cl set_commit</span></strong>
1005 <strong><span class="white">$</span></strong> # Note that the committed hash whi ch lands will /not/ match the
1006 <strong><span class="white">$</span></strong> # commit hashes of your local bran ch.</code></pre>
1007 </div></div>
1008 </div>
1009 </div>
1010 <div class="sect1">
1011 <h2 id="_getting_the_code">GETTING THE CODE</h2>
1012 <div class="sectionbody">
1013 <div class="paragraph"><p>Pick an empty directory and run one of the following:< /p></div>
1014 <div class="listingblock">
1015 <div class="content">
1016 <pre><code><strong><span class="white">$ fetch chromium</span></strong> # Basic checkout for desktop Chromium
1017 <strong><span class="white">$ fetch blink</span></strong> # Chromium code wi th Blink checked out to tip-of-tree
1018 <strong><span class="white">$ fetch android</span></strong> # Chromium checkou t for Android platform
1019 <strong><span class="white">$ fetch ios</span></strong> # Chromium checkou t for iOS platform</code></pre>
1020 </div></div>
1021 <div class="paragraph"><p>When the <code>fetch</code> tool completes you should have the following in your working
1022 directory:</p></div>
1023 <div class="listingblock">
1024 <div class="content">
1025 <pre><code><strong><span class="white">.gclient</span></strong> # A configurat ion file for you source checkout
1026 <strong><span class="white">src/</span></strong> # Top-level Chromium sour ce checkout.</code></pre>
1027 </div></div>
1028 <div class="paragraph"><p>If you are on linux, then you&#8217;ll need to run:</p ></div>
1029 <div class="listingblock">
1030 <div class="content">
1031 <pre><code><strong><span class="white">$ cd src &amp;&amp; ./build/install-build -deps.sh</span></strong></code></pre>
1032 </div></div>
1033 <div class="paragraph"><p>And finally:</p></div>
1034 <div class="listingblock">
1035 <div class="content">
1036 <pre><code><strong><span class="white">$ gclient sync</span></strong></code></pr e>
1037 </div></div>
1038 <div class="paragraph"><p>This will pull all dependencies of the Chromium src ch eckout. You will need
1039 to run this any time you update the main src checkout.</p></div>
1040 </div>
1041 </div>
1042 <div class="sect1">
1043 <h2 id="_creating_uploading_a_cl">CREATING / UPLOADING A CL</h2>
1044 <div class="sectionbody">
1045 <div class="admonitionblock">
1046 <table><tr>
1047 <td class="icon">
1048 <div class="title">Note</div>
1049 </td>
1050 <td class="content">The remainder of the tutorial assumes that your current work ing directory
1051 is the <code>src/</code> folder mentioned in <a href="#_getting_the_code">Gettin g the code</a>.</td>
1052 </tr></table>
1053 </div>
1054 <div class="paragraph"><p>Each CL corresponds exactly with a single branch in gi t. Any time you want to
1055 begin a new CL, just:</p></div>
1056 <div class="listingblock">
1057 <div class="content">
1058 <pre><code><strong><span class="white">$ git new-branch &lt;branch_name&gt;</spa n></strong></code></pre>
1059 </div></div>
1060 <div class="paragraph"><p>This will create and checkout a new branch named <code >branch_name</code> which will track
1061 the default upstream (which is <code>origin/master</code>). See <a href="git-new -branch.html">git-new-branch(1)</a>
1062 for more features, such as the ability to track <em>LKGR</em>.</p></div>
1063 <div class="paragraph"><p>Commit as many changes as you like to this branch. Whe n you want to upload it
1064 for review, run:</p></div>
1065 <div class="listingblock">
1066 <div class="content">
1067 <pre><code><strong><span class="white">$ git cl upload</span></strong></code></p re>
1068 </div></div>
1069 <div class="paragraph"><p>This will take the diff of your branch against its ups tream (<code>origin/master</code>),
1070 and will post it to the <a href="https://codereview.chromium.org">Chromium code
1071 review site</a>.</p></div>
1072 </div>
1073 </div>
1074 <div class="sect1">
1075 <h2 id="_updating_the_code">UPDATING THE CODE</h2>
1076 <div class="sectionbody">
1077 <div class="paragraph"><p>Inevitably, you&#8217;ll want to pull in changes from the main Chromium repo. This is
1078 pretty easy with <em>depot_tools</em>:</p></div>
1079 <div class="listingblock">
1080 <div class="content">
1081 <pre><code><strong><span class="white">$ git rebase-update</span></strong></code ></pre>
1082 </div></div>
1083 <div class="paragraph"><p>This command will update all of your CLs to contain th e latest code from their
1084 upstreams. It will also automatically clean up CLs which have been committed and
1085 a couple other nice things. See <a href="git-rebase-update.html">git-rebase-upda te(1)</a> for the full
1086 scoop.</p></div>
1087 <div class="paragraph"><p>One thing to look out for are <em>merge conflicts</em> . These happen for exactly the
1088 same as they do with SVN, but the experience is a little more controllable with
1089 git. <code>git rebase-update</code> will try to rebase all your branches for you , but if it
1090 encounters a merge conflict in one, it will halt and leave you in a rebase
1091 conflict state (see <a href="git-rebase.html">git-rebase(1)</a>). Resolving <cod e>git rebase</code> merge
1092 conflicts is beyond the scope of this tutorial, but there are many good sources
1093 online (see the <a href="#_prerequisites">Prerequisites</a> for some).</p></div>
1094 <div class="paragraph"><p>Sometimes you&#8217;re pretty certain that you&#8217;v e committed a certain branch, but <code>git
1095 rebase-update</code> isn&#8217;t able to tell that for sure. This is usually bec ause your
1096 branch doesn&#8217;t rebase cleanly. You could just delete the branch with <code >git branch
1097 -D &lt;branch&gt;</code>, but you&#8217;d like to double check the diff of your branch against its
1098 upstream before deleting it. If this is the case you can abort the rebase
1099 started by <code>git rebase-update</code>, and then run <a href="git-squash-bran ch.html">git-squash-branch(1)</a> to
1100 flatten your branch into a single commit. When you run <code>git rebase-update</ code>
1101 again, you&#8217;ll get a (hopefully) much smaller / saner diff. If it turns out you
1102 were wrong about your branch being fully committed, you can use
1103 <a href="git-reflog.html">git-reflog(1)</a> to reset your branch back to where i t was before. If the
1104 diff looks inconsequential, you can use <code>git rebase --skip</code> to ignore it, and
1105 then <code>git rebase-update</code> will clean it up for you.</p></div>
1106 <div class="paragraph"><p>Once you&#8217;re done resolving all of the merge conf lict, just run <code>git
1107 rebase-update</code>, and it will pick up where it left off. Once the command ha s
1108 finished updating all of your branches, it will return you back to the branch
1109 you started on.</p></div>
1110 <div class="admonitionblock">
1111 <table><tr>
1112 <td class="icon">
1113 <div class="title">Note</div>
1114 </td>
1115 <td class="content">Running <code>git rebase-update</code> will update all your branches, but it will not
1116 automatically run <code>gclient sync</code> to update your dependencies.</td>
1117 </tr></table>
1118 </div>
1119 </div>
1120 </div>
1121 <div class="sect1">
1122 <h2 id="_managing_multiple_cls">MANAGING MULTIPLE CLS</h2>
1123 <div class="sectionbody">
1124 <div class="paragraph"><p>Sometimes you want to work on more than one CL at once (say, you have a CL
1125 posted for review and want to work on something else). For each CL that you
1126 want to work on, just use <code>git new-branch &lt;branchname&gt;</code>.</p></d iv>
1127 <div class="paragraph"><p>Once you start to have more than one CL at a time, it can be easy to lose your
1128 bearings. Fortunately, <em>depot_tools</em> has two tools to help you out:</p></ div>
1129 <div class="listingblock">
1130 <div class="content">
1131 <pre><code><strong><span class="white">$ git map</span></strong>
1132 <span class="white blue-background">*</span>&#8203;<strong><span class="blue-bac kground red"> 7dcfe47 </span></strong> <span class="green">(</span>&#8203; <strong><span class="aqua">frozen_changes</span></strong>&#8203;<span class="gre en">)</span> <span class="yellow">2014-03-12</span> ~ FREEZE.unindexed
1133 * <strong><span class="red">4b0c180</span></strong> <span class="yellow"> 2014-03-12</span> ~ modfile
1134 * <strong><span class="red">59a7cca</span></strong> <span class="yellow"> 2014-03-12</span> ~ a deleted file
1135 * <strong><span class="red">6bec695</span></strong> <span class="green">( </span>&#8203;<span class="red">origin/master</span>&#8203;<span class="green">) </span> <span class="yellow">2014-03-11</span> ~ Add neat feature <strong><sp an class="white">&lt;(frozen_changes)</span></strong>
1136 * <strong><span class="red">d15a38a</span></strong> <span class="yellow"> 2014-03-11</span> ~ Epic README update
1137 * <strong><span class="red">d559894</span></strong> <span class="green">( </span>&#8203;<strong><span class="lime">master</span></strong>&#8203;<span clas s="green">)</span> <span class="yellow">2014-03-11</span> ~ Important upstream c hange
1138 <span class="red">|</span> * <strong><span class="red">9c311fd</span></strong> <span class="green">(</span>&#8203;<strong><span class="lime">cool_feature</ span></strong>&#8203;<span class="green">)</span> <span class="yellow">2014-03-1 1</span> ~ Respond to CL comments
1139 <span class="red">|</span> <span class="green">|</span> * <strong><span class="r ed">2a1eeb2</span></strong> <span class="green">(</span>&#8203;<strong><span class="lime">subfeature</span></strong>&#8203;<span class="green">)</span> <span class="yellow">2014-03-11</span> ~ integrate with CoolService
1140 <span class="red">|</span> <span class="green">|</span> * <strong><span class="r ed">d777af6</span></strong> <span class="yellow">2014-03-11</span> ~ slick co mmenting action
1141 <span class="red">|</span> <span class="green">|/</span>
1142 <span class="red">|</span> * <strong><span class="red">265803a</span></strong> <span class="yellow">2014-03-11</span> ~ another improvement <strong><spa n class="white">&lt;(subfeature)</span></strong>
1143 <span class="red">|</span> * <strong><span class="red">6d831ac</span></strong> <span class="green">(</span>&#8203;<strong><span class="fuchsia">spleen_tag< /span></strong>&#8203;<span class="green">)</span> <span class="yellow">2014-03- 11</span> ~ Refactor spleen
1144 <span class="red">|</span> * <strong><span class="red">82e74ab</span></strong> <span class="yellow">2014-03-11</span> ~ Add widget
1145 <span class="red">|/</span>
1146 * <strong><span class="red">d08c5b3</span></strong> <span class="green">( </span>&#8203;<strong><span class="lime">bogus_noparent</span></strong>&#8203;<s pan class="green">)</span> <span class="yellow">2014-03-11</span> ~ Wonderful be ginnings <strong><span class="white">&lt;(cool_feature)</span></strong></code ></pre>
1147 </div></div>
1148 <div class="paragraph"><p>Note that this example repo is in dire need of a <a hr ef="git-rebase-update.html">git-rebase-update(1)</a>!</p></div>
1149 <div class="listingblock">
1150 <div class="content">
1151 <pre><code><strong><span class="white">$ git map-branches</span></strong>
1152 <span class="red">origin/master</span>
1153 <span class="green">cool_feature</span>
1154 <span class="green">subfeature</span>
1155 <span class="aqua">frozen_changes *</span>
1156 <span class="green">master</span></code></pre>
1157 </div></div>
1158 <div class="dlist"><dl>
1159 <dt class="hdlist1">
1160 <a href="git-map.html">git-map(1)</a>
1161 </dt>
1162 <dd>
1163 <p>
1164 This tool shows you the history of all of your branches in a pseudo-graphical
1165 format. In particular, it will show you which commits all of your branches
1166 are on, which commit you currently have checked out, and more. Check out the
1167 doc for the full details.
1168 </p>
1169 </dd>
1170 <dt class="hdlist1">
1171 <a href="git-map-branches.html">git-map-branches(1)</a>
1172 </dt>
1173 <dd>
1174 <p>
1175 This tool just shows you which branches you have in your repo, and thier
1176 upstream relationship to each other (as well as which branch you have checked
1177 out at the moment).
1178 </p>
1179 </dd>
1180 </dl></div>
1181 <div class="paragraph"><p>Additionally, sometimes you need to switch between bra nches, but you&#8217;ve got work
1182 in progress. You could use <a href="git-stash.html">git-stash(1)</a>, but that c an be tricky to
1183 manage because you need to remember which branches you stashed what changes on.
1184 Helpfully <em>depot_tools</em> includes two tools which can greatly assist in ca se:</p></div>
1185 <div class="paragraph"><p><a href="git-freeze.html">git-freeze(1)</a> allows you to put the current branch in 'suspended
1186 animation' by committing your changes to a specially-named commit on the top of
1187 your current branch. When you come back to your branch later, you can just run
1188 <a href="git-thaw.html">git-thaw(1)</a> to get your work-in-progress changes bac k to what they were.</p></div>
1189 <div class="paragraph"><p>Another useful tool is <a href="git-rename-branch.html ">git-rename-branch(1)</a>. Unlike <code>git branch -m &lt;old&gt;
1190 &lt;new&gt;</code>, this tool will correctly preserve the upstream relationships of your
1191 branch compared to its downstreams.</p></div>
1192 <div class="paragraph"><p>Finally, take a look at <a href="git-upstream-diff.htm l">git-upstream-diff(1)</a>. This will show you the
1193 combined diff for all the commits on your branch against the upstream tracking
1194 branch. This is <em>exactly</em> what <code>git cl upload</code> will push up to code review.
1195 Additionally, consider trying the <code>--wordwise</code> argument to get a colo rized
1196 per-word diff (instead of a per-line diff).</p></div>
1197 </div>
1198 </div>
1199 <div class="sect1">
1200 <h2 id="_managing_dependent_cls">MANAGING DEPENDENT CLS</h2>
1201 <div class="sectionbody">
1202 <div class="paragraph"><p>Now that you know how to manage <em>independent</em> C Ls, we&#8217;ll see how to manage
1203 <em>dependent</em> CLs. Dependent CLs are useful when your second (or third or f ourth
1204 or &#8230;) CL depends on the changes in one of your other CLs (such as: CL 2 wo n&#8217;t
1205 compile without CL 1, but you want to submit them as two separate reviews).</p>< /div>
1206 <div class="paragraph"><p>Like all of the other CLs we&#8217;ve created, we use <a href="git-new-branch.html">git-new-branch(1)</a>, but
1207 this time with an extra argument. First, <code>git checkout</code> the branch
1208 you want to base the new one on (i.e. CL 1), and then run:</p></div>
1209 <div class="listingblock">
1210 <div class="content">
1211 <pre><code><strong><span class="white">$ git new-branch --upstream_current &lt;b ranch_name&gt;</span></strong></code></pre>
1212 </div></div>
1213 <div class="paragraph"><p>This will make a new branch which tracks the <em>curre nt</em> branch as its upstream
1214 (as opposed to <em>origin/master</em>). All changes you commit to this branch wi ll be
1215 in addition to the previous branch, but when you <code>git cl upload</code>, you will only
1216 upload the diff for the dependent (child) branch. You may have as many branches
1217 nested in this fashion as you like.</p></div>
1218 <div class="paragraph"><p><a href="git-map.html">git-map(1)</a> and <a href="git -map-branches.html">git-map-branches(1)</a> are particularly helpful when
1219 you have dependent branches. In addition, there are two helper commands which
1220 let you traverse your working copy up and down this tree of branches:
1221 <a href="git-nav-upstream.html">git-nav-upstream(1)</a> and <a href="git-nav-dow nstream.html">git-nav-downstream(1)</a>.</p></div>
1222 <div class="paragraph"><p>Sometimes when dealing with dependent CLs, it turns ou t that you accidentally
1223 based a branch on the wrong upstream, but since then you&#8217;ve committed chan ges to
1224 it, or even based <em>another</em> branch off of that one. Or you discover that you
1225 have two independent CLs that would actually be much better off as dependent
1226 CLs. In instances like these, you can check out the offending branch and use
1227 <a href="git-reparent-branch.html">git-reparent-branch(1)</a> to move it to trac k a different parent. Note that
1228 this can also be used to move a branch from tracking <code>origin/master</code> to <code>lkgr</code>
1229 or vice versa.</p></div>
1230 </div>
1231 </div>
1232 <div class="sect1">
1233 <h2 id="_example_walkthrough">EXAMPLE WALKTHROUGH</h2>
1234 <div class="sectionbody">
1235 <div class="paragraph"><p>This section will demo what a typical workflow looks l ike when writing,
1236 updating, and committing multiple CLs.</p></div>
1237 <div class="paragraph"><p></p></div><div class="listingblock"><div class="conten t"><pre><code><span style="font-weight: bold; color: #ffffff">$ fetch chromium</ span>
1238 ... truncated output ...
1239 <span style="font-weight: bold; color: #ffffff">$ cd src</span>
1240 </code></pre></div></div><p><div class="paragraph"> (only on linux)</p></div><di v class="listingblock"><div class="content"><pre><code><span style="font-weight: bold; color: #ffffff">$ ./build/install-build-deps.sh</span>
1241 ... truncated output ...
1242 </code></pre></div></div><p><div class="paragraph"> Pull in all dependencies for HEAD</p></div><div class="listingblock"><div class="content"><pre><code><span s tyle="font-weight: bold; color: #ffffff">$ gclient sync</span>
1243 ... truncated output ...
1244 </code></pre></div></div><p><div class="paragraph"> Let's fix something!</p></di v><div class="listingblock"><div class="content"><pre><code><span style="font-we ight: bold; color: #ffffff">$ git new-branch fix_typo</span>
1245 <span style="font-weight: bold; color: #ffffff">$ echo -e '/Banana\ns/Banana/Kuu n\nwq' | ed build/whitespace_file.txt</span>
1246 1503
1247 It was a Domo-Banana.
1248 It was a Domo-Kuun.
1249 1501
1250 <span style="font-weight: bold; color: #ffffff">$ git commit -am 'Fix terrible t ypo.'</span>
1251 [fix_typo 615ffa7] Fix terrible typo.
1252 1 file changed, 1 insertion(+), 1 deletion(-)
1253 <span style="font-weight: bold; color: #ffffff">$ git map</span>
1254 <span style="background-color: #492ee1"></span><span style="font-weight: bold; b ackground-color: #492ee1">* </span><span style="font-weight: bold; color: #e42e1 6; background-color: #492ee1">615ffa7 </span><span style="color: #19c518"> (</ span><span style="color: #33d6e5"></span><span style="font-weight: bold; color: #33d6e5">fix_typo</span><span style="font-weight: bold"></span><span style="font -weight: bold"></span><span style="color: #19c518">) </span><span style="color: #e7e71c">2014-04-10</span> ~ Fix terrible typo.
1255 * <span style="font-weight: bold; color: #e42e16">beec6f4 </span><span sty le="color: #19c518"> (</span><span style="color: #e42e16">origin/master</span><s pan style="color: #19c518">, </span><span style="color: #e42e16">origin/HEAD</sp an><span style="color: #19c518">) </span><span style="color: #e7e71c">2014-04-10 </span> ~ Make ReflectorImpl use mailboxes<span style="font-weight: bold"></span ><span style="font-weight: bold; color: #ffffff"> &lt;(fix_typo)</span><span style="font-weight: bold"></span><span style="font-weight: bold"></span>
1256 * <span style="font-weight: bold; color: #e42e16">41290e0 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ don 't use glibc-specific execinfo.h on uclibc builds
1257 * <span style="font-weight: bold; color: #e42e16">a76fde7 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ [fs p] Add requestUnmount() method together with the request manager.
1258 * <span style="font-weight: bold; color: #e42e16">9de7a71 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ lin ux_aura: Use system configuration for middle clicking the titlebar.
1259 * <span style="font-weight: bold; color: #e42e16">073b0c2 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Con tentView-&gt;ContentViewCore in ContentViewRenderView
1260 * <span style="font-weight: bold; color: #e42e16">2250f53 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ ozo ne: evdev: Filter devices by path
1261 * <span style="font-weight: bold; color: #e42e16">33a7a74 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Alw ays output seccomp error messages to stderr
1262 <span style="font-weight: bold; color: #ffffff">$ git status</span>
1263 On branch fix_typo
1264 Your branch is ahead of 'origin/master' by 1 commit.
1265 (use "git push" to publish your local commits)
1266
1267 nothing to commit, working directory clean
1268 <span style="font-weight: bold; color: #ffffff">$ git cl upload -r domo@chromium .org --send-mail</span>
1269 ... truncated output ...
1270 </code></pre></div></div><p><div class="paragraph"> While we wait for feedback, let's do something else.</p></div><div class="listingblock"><div class="content" ><pre><code><span style="font-weight: bold; color: #ffffff">$ git new-branch cha p2</span>
1271 <span style="font-weight: bold; color: #ffffff">$ git map-branches</span>
1272 <span style="color: #e42e16"></span><span style="font-weight: bold; color: #e42e 16">origin/master
1273 </span><span style="font-weight: bold; color: #33d6e5"></span><span style="font- weight: bold; color: #33d6e5"> chap2 *
1274 </span><span style="font-weight: bold; color: #19c518"></span><span style="color : #19c518"> fix_typo
1275 </span><span style="font-weight: bold; color: #ffffff">$ cat &gt;&gt; build/whit espace_file.txt &lt;&lt;EOF</span>
1276
1277 "You recall what happened on Mulholland drive?" The ceiling fan rotated slowly
1278 overhead, barely disturbing the thick cigarette smoke. No doubt was left about
1279 when the fan was last cleaned.
1280 EOF
1281 <span style="font-weight: bold; color: #ffffff">$ git status</span>
1282 On branch chap2
1283 Your branch is up-to-date with 'origin/master'.
1284
1285 Changes not staged for commit:
1286 (use "git add &lt;file&gt;..." to update what will be committed)
1287 (use "git checkout -- &lt;file&gt;..." to discard changes in working directory )
1288
1289 <span style="color: #e42e16">modified: build/whitespace_file.txt</span >
1290
1291 no changes added to commit (use "git add" and/or "git commit -a")
1292 </code></pre></div></div><p><div class="paragraph"> Someone on the code review p ointed out that our typo-fix has a typo :( We're still working on 'chap2' but we really want to land 'fix_typo', so let's switch over and fix it.</p></div><div class="listingblock"><div class="content"><pre><code><span style="font-weight: b old; color: #ffffff">$ git freeze</span>
1293 <span style="font-weight: bold; color: #ffffff">$ git checkout fix_typo</span>
1294 Switched to branch 'fix_typo'
1295 Your branch is ahead of 'origin/master' by 1 commit.
1296 (use "git push" to publish your local commits)
1297 <span style="font-weight: bold; color: #ffffff">$ echo -e '/Kuun\ns/Kuun/Kun\nwq ' | ed build/whitespace_file.txt</span>
1298 1501
1299 It was a Domo-Kuun.
1300 It was a Domo-Kun.
1301 1500
1302 <span style="font-weight: bold; color: #ffffff">$ git upstream-diff --wordwise</ span>
1303 <span style="font-weight: bold">diff --git a/build/whitespace_file.txt b/build/w hitespace_file.txt</span>
1304 <span style="font-weight: bold">index 3eba355..57cdcee 100644</span>
1305 <span style="font-weight: bold">--- a/build/whitespace_file.txt</span>
1306 <span style="font-weight: bold">+++ b/build/whitespace_file.txt</span>
1307 <span style="color: #33d6e5">@@ -17,7 +17,7 @@</span> swept up the streets (for it is in London that our scene lies), rattling along
1308 the housetops, and fiercely agitating the scanty flame of the lamps that
1309 struggled against the elements. A hooded figure emerged.
1310
1311 It was a Domo-<span style="color: #e42e16">Banana</span><span style="color: #19c 518">Kun</span>.
1312
1313 "What took you so long?", inquired his wife.
1314
1315 <span style="font-weight: bold; color: #ffffff">$ git commit -am 'Fix typo for g ood!'</span>
1316 [fix_typo 2c0ad9c] Fix typo for good!
1317 1 file changed, 1 insertion(+), 1 deletion(-)
1318 <span style="font-weight: bold; color: #ffffff">$ git cl upload</span>
1319 ... truncated output ...
1320 </code></pre></div></div><p><div class="paragraph"> Since we got lgtm, let the C Q land it.</p></div><div class="listingblock"><div class="content"><pre><code><s pan style="font-weight: bold; color: #ffffff">$ git cl set_commit</span>
1321 <span style="font-weight: bold; color: #ffffff">$ git map</span>
1322 * <span style="font-weight: bold; color: #e42e16">0e2e52e </span><span sty le="color: #19c518"> (</span><span style="color: #19c518"></span><span style="fo nt-weight: bold; color: #19c518">chap2</span><span style="font-weight: bold"></s pan><span style="font-weight: bold"></span><span style="color: #19c518">) </span ><span style="color: #e7e71c">2014-04-10</span> ~ FREEZE.unindexed
1323 <span style="color: #e42e16">|</span> <span style="background-color: #492ee1"></ span><span style="font-weight: bold; background-color: #492ee1">* </span><span s tyle="font-weight: bold; color: #e42e16; background-color: #492ee1">2c0ad9c </span><span style="color: #19c518"> (</span><span style="color: #33d6e5"></span ><span style="font-weight: bold; color: #33d6e5">fix_typo</span><span style="fon t-weight: bold"></span><span style="font-weight: bold"></span><span style="color : #19c518">) </span><span style="color: #e7e71c">2014-04-10</span> ~ Fix typo fo r good!
1324 <span style="color: #e42e16">|</span> * <span style="font-weight: bold; color: # e42e16">615ffa7 </span><span style="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Fix terrible typo.
1325 <span style="color: #e42e16">|</span><span style="color: #e42e16">/</span>
1326 * <span style="font-weight: bold; color: #e42e16">beec6f4 </span><span sty le="color: #19c518"> (</span><span style="color: #e42e16">origin/master</span><s pan style="color: #19c518">, </span><span style="color: #e42e16">origin/HEAD</sp an><span style="color: #19c518">) </span><span style="color: #e7e71c">2014-04-10 </span> ~ Make ReflectorImpl use mailboxes<span style="font-weight: bold"></span ><span style="font-weight: bold; color: #ffffff"> &lt;(chap2, fix_typo)</span ><span style="font-weight: bold"></span><span style="font-weight: bold"></span>
1327 * <span style="font-weight: bold; color: #e42e16">41290e0 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ don 't use glibc-specific execinfo.h on uclibc builds
1328 * <span style="font-weight: bold; color: #e42e16">a76fde7 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ [fs p] Add requestUnmount() method together with the request manager.
1329 * <span style="font-weight: bold; color: #e42e16">9de7a71 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ lin ux_aura: Use system configuration for middle clicking the titlebar.
1330 * <span style="font-weight: bold; color: #e42e16">073b0c2 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Con tentView-&gt;ContentViewCore in ContentViewRenderView
1331 * <span style="font-weight: bold; color: #e42e16">2250f53 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ ozo ne: evdev: Filter devices by path
1332 * <span style="font-weight: bold; color: #e42e16">33a7a74 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Alw ays output seccomp error messages to stderr
1333 </code></pre></div></div><p><div class="paragraph"> Switch back to where we were using the nav* commands (for fun... git checkout would work here too)</p></div> <div class="listingblock"><div class="content"><pre><code><span style="font-weig ht: bold; color: #ffffff">$ git map-branches</span>
1334 <span style="color: #e42e16"></span><span style="color: #e42e16">origin/master
1335 </span><span style="color: #19c518"></span><span style="color: #19c518"> chap2
1336 </span><span style="color: #33d6e5"></span><span style="font-weight: bold; color : #33d6e5"> fix_typo *
1337 </span><span style="font-weight: bold; color: #ffffff">$ git nav-upstream</span>
1338 Note: checking out 'origin/master'.
1339
1340 You are in 'detached HEAD' state. You can look around, make experimental
1341 changes and commit them, and you can discard any commits you make in this
1342 state without impacting any branches by performing another checkout.
1343
1344 If you want to create a new branch to retain commits you create, you may
1345 do so (now or later) by using -b with the checkout command again. Example:
1346
1347 git checkout -b new_branch_name
1348
1349 HEAD is now at beec6f4... Make ReflectorImpl use mailboxes
1350 <span style="font-weight: bold; color: #ffffff">$ git nav-downstream</span>
1351 Please select a downstream branch
1352 0. chap2
1353 1. fix_typo
1354 Selection (0-1)[0]: 0
1355 Previous HEAD position was beec6f4... Make ReflectorImpl use mailboxes
1356 Switched to branch 'chap2'
1357 Your branch is ahead of 'origin/master' by 1 commit.
1358 (use "git push" to publish your local commits)
1359 <span style="font-weight: bold; color: #ffffff">$ git map-branches</span>
1360 <span style="color: #e42e16"></span><span style="color: #e42e16">origin/master
1361 </span><span style="color: #33d6e5"></span><span style="font-weight: bold; color : #33d6e5"> chap2 *
1362 </span><span style="font-weight: bold; color: #19c518"></span><span style="color : #19c518"> fix_typo
1363 </code></pre></div></div><p><div class="paragraph"> Now we can pick up on chapte r2 where we left off.</p></div><div class="listingblock"><div class="content"><p re><code></span><span style="font-weight: bold; color: #ffffff">$ git thaw</span >
1364 <span style="font-weight: bold; color: #ffffff">$ git diff</span>
1365 <span style="font-weight: bold">diff --git a/build/whitespace_file.txt b/build/w hitespace_file.txt</span>
1366 <span style="font-weight: bold">index 3eba355..9d08d9d 100644</span>
1367 <span style="font-weight: bold">--- a/build/whitespace_file.txt</span>
1368 <span style="font-weight: bold">+++ b/build/whitespace_file.txt</span>
1369 <span style="color: #33d6e5">@@ -34,3 +34,7 @@</span> with his fork, watching th e runny jelly spread and pool across his plate,
1370 like the blood of a dying fawn. \"It reminds me of that time --\" he started, a s
1371 his wife cut in quickly: \"-- please. I can't bear to hear it.\". A flury of
1372 images coming from the past flowed through his mind.
1373 <span style="color: #19c518">+</span>
1374 <span style="color: #19c518">+</span><span style="color: #19c518">"You recall wh at happened on Mulholland drive?" The ceiling fan rotated slowly</span>
1375 <span style="color: #19c518">+</span><span style="color: #19c518">overhead, bare ly disturbing the thick cigarette smoke. No doubt was left about</span>
1376 <span style="color: #19c518">+</span><span style="color: #19c518">when the fan w as last cleaned.</span>
1377 <span style="font-weight: bold; color: #ffffff">$ cat &gt;&gt; build/whitespace_ file.txt &lt;&lt;EOF</span>
1378
1379 There was an poignant pause.
1380 EOF
1381 <span style="font-weight: bold; color: #ffffff">$ git diff</span>
1382 <span style="font-weight: bold">diff --git a/build/whitespace_file.txt b/build/w hitespace_file.txt</span>
1383 <span style="font-weight: bold">index 3eba355..e3a55de 100644</span>
1384 <span style="font-weight: bold">--- a/build/whitespace_file.txt</span>
1385 <span style="font-weight: bold">+++ b/build/whitespace_file.txt</span>
1386 <span style="color: #33d6e5">@@ -34,3 +34,9 @@</span> with his fork, watching th e runny jelly spread and pool across his plate,
1387 like the blood of a dying fawn. \"It reminds me of that time --\" he started, a s
1388 his wife cut in quickly: \"-- please. I can't bear to hear it.\". A flury of
1389 images coming from the past flowed through his mind.
1390 <span style="color: #19c518">+</span>
1391 <span style="color: #19c518">+</span><span style="color: #19c518">"You recall wh at happened on Mulholland drive?" The ceiling fan rotated slowly</span>
1392 <span style="color: #19c518">+</span><span style="color: #19c518">overhead, bare ly disturbing the thick cigarette smoke. No doubt was left about</span>
1393 <span style="color: #19c518">+</span><span style="color: #19c518">when the fan w as last cleaned.</span>
1394 <span style="color: #19c518">+</span>
1395 <span style="color: #19c518">+</span><span style="color: #19c518">There was an p oignant pause.</span>
1396 <span style="font-weight: bold; color: #ffffff">$ git commit -am 'Finish chapter 2'</span>
1397 [chap2 ceef712] Finish chapter 2
1398 1 file changed, 6 insertions(+)
1399 <span style="font-weight: bold; color: #ffffff">$ git map</span>
1400 <span style="background-color: #492ee1"></span><span style="font-weight: bold; b ackground-color: #492ee1">* </span><span style="font-weight: bold; color: #e42e1 6; background-color: #492ee1">ceef712 </span><span style="color: #19c518"> (</ span><span style="color: #33d6e5"></span><span style="font-weight: bold; color: #33d6e5">chap2</span><span style="font-weight: bold"></span><span style="font-we ight: bold"></span><span style="color: #19c518">) </span><span style="color: #e7 e71c">2014-04-10</span> ~ Finish chapter 2
1401 <span style="color: #e42e16">|</span> * <span style="font-weight: bold; color: # e42e16">2c0ad9c </span><span style="color: #19c518"> (</span><span style="color: #19c518"></span><span style="font-weight: bold; color: #19c518">fix_typo</span> <span style="font-weight: bold"></span><span style="font-weight: bold"></span><s pan style="color: #19c518">) </span><span style="color: #e7e71c">2014-04-10</spa n> ~ Fix typo for good!
1402 <span style="color: #e42e16">|</span> * <span style="font-weight: bold; color: # e42e16">615ffa7 </span><span style="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Fix terrible typo.
1403 <span style="color: #e42e16">|</span><span style="color: #e42e16">/</span>
1404 * <span style="font-weight: bold; color: #e42e16">beec6f4 </span><span sty le="color: #19c518"> (</span><span style="color: #e42e16">origin/master</span><s pan style="color: #19c518">, </span><span style="color: #e42e16">origin/HEAD</sp an><span style="color: #19c518">) </span><span style="color: #e7e71c">2014-04-10 </span> ~ Make ReflectorImpl use mailboxes<span style="font-weight: bold"></span ><span style="font-weight: bold; color: #ffffff"> &lt;(chap2, fix_typo)</span ><span style="font-weight: bold"></span><span style="font-weight: bold"></span>
1405 * <span style="font-weight: bold; color: #e42e16">41290e0 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ don 't use glibc-specific execinfo.h on uclibc builds
1406 * <span style="font-weight: bold; color: #e42e16">a76fde7 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ [fs p] Add requestUnmount() method together with the request manager.
1407 * <span style="font-weight: bold; color: #e42e16">9de7a71 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ lin ux_aura: Use system configuration for middle clicking the titlebar.
1408 * <span style="font-weight: bold; color: #e42e16">073b0c2 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Con tentView-&gt;ContentViewCore in ContentViewRenderView
1409 * <span style="font-weight: bold; color: #e42e16">2250f53 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ ozo ne: evdev: Filter devices by path
1410 * <span style="font-weight: bold; color: #e42e16">33a7a74 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Alw ays output seccomp error messages to stderr
1411 <span style="font-weight: bold; color: #ffffff">$ git cl upload -r domo@chromium .org --send-mail</span>
1412 ... truncated output ...
1413 </code></pre></div></div><p><div class="paragraph"> We poke a committer until th ey lgtm :)</p></div><div class="listingblock"><div class="content"><pre><code><s pan style="font-weight: bold; color: #ffffff">$ git cl set_commit</span>
1414 </code></pre></div></div><p><div class="paragraph"> While that runs through the CQ, let's get started on chapter 3. Since we know that chapter 3 depends on chap ter 2, we'll track the current chapter2 branch.</p></div><div class="listingbloc k"><div class="content"><pre><code><span style="font-weight: bold; color: #fffff f">$ git new-branch --upstream_current chap3</span>
1415 <span style="font-weight: bold; color: #ffffff">$ cat &gt;&gt; build/whitespace_ file.txt &lt;&lt;EOF</span>
1416
1417 CHAPTER 3:
1418 Mr. Usagi felt that something wasn't right. Shortly after the Domo-Kun left he
1419 began feeling sick.
1420 EOF
1421 <span style="font-weight: bold; color: #ffffff">$ git commit -am 'beginning of c hapter 3'</span>
1422 [chap3 7d4238a] beginning of chapter 3
1423 1 file changed, 4 insertions(+)
1424 <span style="font-weight: bold; color: #ffffff">$ git map</span>
1425 <span style="background-color: #492ee1"></span><span style="font-weight: bold; b ackground-color: #492ee1">* </span><span style="font-weight: bold; color: #e42e1 6; background-color: #492ee1">7d4238a </span><span style="color: #19c518"> (</ span><span style="color: #33d6e5"></span><span style="font-weight: bold; color: #33d6e5">chap3</span><span style="font-weight: bold"></span><span style="font-we ight: bold"></span><span style="color: #19c518">) </span><span style="color: #e7 e71c">2014-04-10</span> ~ beginning of chapter 3
1426 * <span style="font-weight: bold; color: #e42e16">ceef712 </span><span sty le="color: #19c518"> (</span><span style="color: #19c518"></span><span style="fo nt-weight: bold; color: #19c518">chap2</span><span style="font-weight: bold"></s pan><span style="font-weight: bold"></span><span style="color: #19c518">) </span ><span style="color: #e7e71c">2014-04-10</span> ~ Finish chapter 2<span style="f ont-weight: bold"></span><span style="font-weight: bold; color: #ffffff"> &lt ;(chap3)</span><span style="font-weight: bold"></span><span style="font-weight: bold"></span>
1427 <span style="color: #e42e16">|</span> * <span style="font-weight: bold; color: # e42e16">2c0ad9c </span><span style="color: #19c518"> (</span><span style="color: #19c518"></span><span style="font-weight: bold; color: #19c518">fix_typo</span> <span style="font-weight: bold"></span><span style="font-weight: bold"></span><s pan style="color: #19c518">) </span><span style="color: #e7e71c">2014-04-10</spa n> ~ Fix typo for good!
1428 <span style="color: #e42e16">|</span> * <span style="font-weight: bold; color: # e42e16">615ffa7 </span><span style="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Fix terrible typo.
1429 <span style="color: #e42e16">|</span><span style="color: #e42e16">/</span>
1430 * <span style="font-weight: bold; color: #e42e16">beec6f4 </span><span sty le="color: #19c518"> (</span><span style="color: #e42e16">origin/master</span><s pan style="color: #19c518">, </span><span style="color: #e42e16">origin/HEAD</sp an><span style="color: #19c518">) </span><span style="color: #e7e71c">2014-04-10 </span> ~ Make ReflectorImpl use mailboxes<span style="font-weight: bold"></span ><span style="font-weight: bold; color: #ffffff"> &lt;(chap2, fix_typo)</span ><span style="font-weight: bold"></span><span style="font-weight: bold"></span>
1431 * <span style="font-weight: bold; color: #e42e16">41290e0 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ don 't use glibc-specific execinfo.h on uclibc builds
1432 * <span style="font-weight: bold; color: #e42e16">a76fde7 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ [fs p] Add requestUnmount() method together with the request manager.
1433 * <span style="font-weight: bold; color: #e42e16">9de7a71 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ lin ux_aura: Use system configuration for middle clicking the titlebar.
1434 * <span style="font-weight: bold; color: #e42e16">073b0c2 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Con tentView-&gt;ContentViewCore in ContentViewRenderView
1435 * <span style="font-weight: bold; color: #e42e16">2250f53 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ ozo ne: evdev: Filter devices by path
1436 * <span style="font-weight: bold; color: #e42e16">33a7a74 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Alw ays output seccomp error messages to stderr
1437 </code></pre></div></div><p><div class="paragraph"> We haven't updated the code in a while, so let's do that now.</p></div><div class="listingblock"><div class= "content"><pre><code><span style="font-weight: bold; color: #ffffff">$ git rebas e-update</span>
1438 Fetching origin
1439 From https://upstream
1440 beec6f4..59cdb73 master -&gt; origin/master
1441 Rebasing: chap2
1442 Rebasing: fix_typo
1443 Failed! Attempting to squash fix_typo ... Success!
1444 Rebasing: chap3
1445 Deleted branch fix_typo (was 5d26fec).
1446 Reparented chap3 to track origin/master (was tracking chap2)
1447 Deleted branch chap2 (was 5d26fec).
1448 </code></pre></div></div><p><div class="paragraph"> Well look at that. The CQ la nded our typo and chapter2 branches already and git rebase-update cleaned them up for us.</p></div><div class="listingblock"><div class="content"><pre><code><s pan style="font-weight: bold; color: #ffffff">$ gclient sync</span>
1449 ... truncated output ...
1450 <span style="font-weight: bold; color: #ffffff">$ git map</span>
1451 <span style="background-color: #492ee1"></span><span style="font-weight: bold; b ackground-color: #492ee1">* </span><span style="font-weight: bold; color: #e42e1 6; background-color: #492ee1">93fe917 </span><span style="color: #19c518"> (</ span><span style="color: #33d6e5"></span><span style="font-weight: bold; color: #33d6e5">chap3</span><span style="font-weight: bold"></span><span style="font-we ight: bold"></span><span style="color: #19c518">) </span><span style="color: #e7 e71c">2014-04-10</span> ~ beginning of chapter 3
1452 * <span style="font-weight: bold; color: #e42e16">5d26fec </span><span sty le="color: #19c518"> (</span><span style="color: #e42e16">origin/master</span><s pan style="color: #19c518">, </span><span style="color: #e42e16">origin/HEAD</sp an><span style="color: #19c518">) </span><span style="color: #e7e71c">2014-04-10 </span> ~ Finish chapter 2<span style="font-weight: bold"></span><span style="fo nt-weight: bold; color: #ffffff"> &lt;(chap3)</span><span style="font-weight: bold"></span><span style="font-weight: bold"></span>
1453 * <span style="font-weight: bold; color: #e42e16">df7fefb </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Rev ert 255617, due to it not tracking use of the link doctor page properly.
1454 * <span style="font-weight: bold; color: #e42e16">4b39cda </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Fix terrible typo.
1455 * <span style="font-weight: bold; color: #e42e16">248c5b6 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Tem porarily CHECK(trial) in ChromeRenderProcessObserver::OnSetFieldTrialGroup.
1456 * <span style="font-weight: bold; color: #e42e16">8171df8 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Rem ove AMD family check for the flapper crypto accelerator.
1457 * <span style="font-weight: bold; color: #e42e16">d6a30d2 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Cha nge the Pica load benchmark to listen for the polymer-ready event
1458 * <span style="font-weight: bold; color: #e42e16">beec6f4 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Mak e ReflectorImpl use mailboxes
1459 * <span style="font-weight: bold; color: #e42e16">41290e0 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ don 't use glibc-specific execinfo.h on uclibc builds
1460 * <span style="font-weight: bold; color: #e42e16">a76fde7 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ [fs p] Add requestUnmount() method together with the request manager.
1461 * <span style="font-weight: bold; color: #e42e16">9de7a71 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ lin ux_aura: Use system configuration for middle clicking the titlebar.
1462 * <span style="font-weight: bold; color: #e42e16">073b0c2 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Con tentView-&gt;ContentViewCore in ContentViewRenderView
1463 * <span style="font-weight: bold; color: #e42e16">2250f53 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ ozo ne: evdev: Filter devices by path
1464 * <span style="font-weight: bold; color: #e42e16">33a7a74 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Alw ays output seccomp error messages to stderr
1465 </code></pre></div></div><p><div class="paragraph"> Someone on IRC mentions that they actually landed a chapter 3 already! We should pull their changes before c ontinuing. Brace for a code conflict!</p></div><div class="listingblock"><div cl ass="content"><pre><code><span style="font-weight: bold; color: #ffffff">$ git r ebase-update</span>
1466 Fetching origin
1467 From https://upstream
1468 5d26fec..59cdb73 master -&gt; origin/master
1469 Rebasing: chap2
1470 ... lots of output, it's a conflict alright :(...
1471 <span style="font-weight: bold; color: #ffffff">$ git diff</span>
1472 <span style="font-weight: bold">diff --cc build/whitespace_file.txt</span>
1473 <span style="font-weight: bold">index 1293282,f903ea2..0000000</span>
1474 <span style="font-weight: bold">--- a/build/whitespace_file.txt</span>
1475 <span style="font-weight: bold">+++ b/build/whitespace_file.txt</span>
1476 <span style="color: #33d6e5">@@@ -42,4 -42,5 +42,9 @@@</span> when the fan was l ast cleaned
1477 There was an poignant pause.
1478
1479 CHAPTER 3:
1480 <span style="color: #19c518">++&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD</span>
1481 <span style="color: #19c518"> +Hilariousness! This chapter is awesome!</span>
1482 <span style="color: #19c518">++=======</span>
1483 <span style="color: #19c518">+ Mr. Usagi felt that something wasn't right. Short ly after the Domo-Kun left he</span>
1484 <span style="color: #19c518">+ began feeling sick.</span>
1485 <span style="color: #19c518">++&gt;&gt;&gt;&gt;&gt;&gt;&gt; beginning of chapter 3</span>
1486 </code></pre></div></div><p><div class="paragraph"> Oh, well, that's not too bad . In fact... that's a terrible chapter 3!</p></div><div class="listingblock"><di v class="content"><pre><code><span style="font-weight: bold; color: #ffffff">$ $ EDITOR build/whitespace_file.txt</span>
1487 ... /me deletes bad chapter 3 ...
1488 <span style="font-weight: bold; color: #ffffff">$ git add build/whitespace_file. txt</span>
1489 <span style="font-weight: bold; color: #ffffff">$ git diff --cached</span>
1490 <span style="font-weight: bold">diff --git a/build/whitespace_file.txt b/build/w hitespace_file.txt</span>
1491 <span style="font-weight: bold">index 1293282..f903ea2 100644</span>
1492 <span style="font-weight: bold">--- a/build/whitespace_file.txt</span>
1493 <span style="font-weight: bold">+++ b/build/whitespace_file.txt</span>
1494 <span style="color: #33d6e5">@@ -42,4 +42,5 @@</span> when the fan was last clea ned.
1495 There was an poignant pause.
1496
1497 CHAPTER 3:
1498 <span style="color: #e42e16">-Hilariousness! This chapter is awesome!</span>
1499 <span style="color: #19c518">+</span><span style="color: #19c518">Mr. Usagi felt that something wasn't right. Shortly after the Domo-Kun left he</span>
1500 <span style="color: #19c518">+</span><span style="color: #19c518">began feeling sick.</span>
1501 </code></pre></div></div><p><div class="paragraph"> Much better</p></div><div cl ass="listingblock"><div class="content"><pre><code><span style="font-weight: bol d; color: #ffffff">$ git rebase --continue</span>
1502 Applying: beginning of chapter 3
1503 <span style="font-weight: bold; color: #ffffff">$ git rebase-update</span>
1504 Fetching origin
1505 chap3 up-to-date
1506 <span style="font-weight: bold; color: #ffffff">$ gclient sync</span>
1507 ... truncated output ...
1508 <span style="font-weight: bold; color: #ffffff">$ git map</span>
1509 <span style="background-color: #492ee1"></span><span style="font-weight: bold; b ackground-color: #492ee1">* </span><span style="font-weight: bold; color: #e42e1 6; background-color: #492ee1">1cb4f5b </span><span style="color: #19c518"> (</ span><span style="color: #33d6e5"></span><span style="font-weight: bold; color: #33d6e5">chap3</span><span style="font-weight: bold"></span><span style="font-we ight: bold"></span><span style="color: #19c518">) </span><span style="color: #e7 e71c">2014-04-10</span> ~ beginning of chapter 3
1510 * <span style="font-weight: bold; color: #e42e16">59cdb73 </span><span sty le="color: #19c518"> (</span><span style="color: #e42e16">origin/master</span><s pan style="color: #19c518">, </span><span style="color: #e42e16">origin/HEAD</sp an><span style="color: #19c518">) </span><span style="color: #e7e71c">2014-04-10 </span> ~ Refactor data interchange format.<span style="font-weight: bold"></spa n><span style="font-weight: bold; color: #ffffff"> &lt;(chap3)</span><span st yle="font-weight: bold"></span><span style="font-weight: bold"></span>
1511 * <span style="font-weight: bold; color: #e42e16">34676a3 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Ens ure FS is exited for all not-in-same-page navigations.
1512 * <span style="font-weight: bold; color: #e42e16">7d4784e </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Add best chapter2 ever!
1513 * <span style="font-weight: bold; color: #e42e16">5d26fec </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Fin ish chapter 2
1514 * <span style="font-weight: bold; color: #e42e16">df7fefb </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Rev ert 255617, due to it not tracking use of the link doctor page properly.
1515 * <span style="font-weight: bold; color: #e42e16">4b39cda </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Fix terrible typo.
1516 * <span style="font-weight: bold; color: #e42e16">248c5b6 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Tem porarily CHECK(trial) in ChromeRenderProcessObserver::OnSetFieldTrialGroup.
1517 * <span style="font-weight: bold; color: #e42e16">8171df8 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Rem ove AMD family check for the flapper crypto accelerator.
1518 * <span style="font-weight: bold; color: #e42e16">d6a30d2 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Cha nge the Pica load benchmark to listen for the polymer-ready event
1519 * <span style="font-weight: bold; color: #e42e16">beec6f4 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Mak e ReflectorImpl use mailboxes
1520 * <span style="font-weight: bold; color: #e42e16">41290e0 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ don 't use glibc-specific execinfo.h on uclibc builds
1521 * <span style="font-weight: bold; color: #e42e16">a76fde7 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ [fs p] Add requestUnmount() method together with the request manager.
1522 * <span style="font-weight: bold; color: #e42e16">9de7a71 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ lin ux_aura: Use system configuration for middle clicking the titlebar.
1523 * <span style="font-weight: bold; color: #e42e16">073b0c2 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Con tentView-&gt;ContentViewCore in ContentViewRenderView
1524 * <span style="font-weight: bold; color: #e42e16">2250f53 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ ozo ne: evdev: Filter devices by path
1525 * <span style="font-weight: bold; color: #e42e16">33a7a74 </span><span sty le="color: #19c518"></span> <span style="color: #e7e71c">2014-04-10</span> ~ Alw ays output seccomp error messages to stderr
1526 <span style="font-weight: bold; color: #ffffff">$ git cl upload</span>
1527 ... truncated output ...
1528 </code></pre></div></div><p><div class="paragraph"></p></div>
1529 <div class="paragraph"><p>So there you have the basic flow. Note that you don&#8 217;t <em>have</em> to do chromium
1530 development using these tools. Any git workflow is compatible, as long as
1531 <code>git cl upload</code> is able to upload good patches.</p></div>
1532 </div>
1533 </div>
1534 <div class="sect1">
1535 <h2 id="_conclusion">CONCLUSION</h2>
1536 <div class="sectionbody">
1537 <div class="paragraph"><p>Hopefully that gives you a good starting overview on C hromium development using
1538 <em>depot_tools</em>. If you have questions which weren&#8217;t answered by this tutorial or
1539 the man pages for the tools (see the index of all tools here:
1540 <a href="depot_tools.html">depot_tools(7)</a>), please feel free to ask.</p></di v>
1541 </div>
1542 </div>
1543 <div class="sect1">
1544 <h2 id="_glossary">GLOSSARY</h2>
1545 <div class="sectionbody">
1546 <div class="dlist"><dl>
1547 <dt class="hdlist1">
1548 CL
1549 </dt>
1550 <dd>
1551 <p>
1552 A <em>change-list</em>. This is a diff which you would like to commit to the
1553 codebase.
1554 </p>
1555 </dd>
1556 <dt class="hdlist1">
1557 DEPS
1558 </dt>
1559 <dd>
1560 <p>
1561 A file in the chromium checkout which <code>gclient sync</code> uses to determ ine what
1562 dependencies to pull in. This file also contains <em>hooks</em>.
1563 </p>
1564 </dd>
1565 <dt class="hdlist1">
1566 LKGR
1567 </dt>
1568 <dd>
1569 <p>
1570 Last Known Good Revision. This is a <a href="git-tag.html">git-tag(1)</a> whic h tracks the last
1571 version of <code>origin/master</code> which has passed the full set of testing on the
1572 <a href="http://build.chromium.org">main Chromium waterfall</a>.
1573 </p>
1574 </dd>
1575 </dl></div>
1576 </div>
1577 </div>
1578 <div class="sect1">
1579 <h2 id="_chromium_depot_tools">CHROMIUM DEPOT_TOOLS</h2>
1580 <div class="sectionbody">
1581 <div class="paragraph"><p>Part of the chromium <a href="depot_tools.html">depot_ tools(7)</a> suite. These tools are meant to
1582 assist with the development of chromium and related projects. Download the tools
1583 from <a href="https://chromium.googlesource.com/chromium/tools/depot_tools.git"> here</a>.</p></div>
1584 </div>
1585 </div>
1586 </div>
1587 <div id="footnotes"><hr /></div>
1588 <div id="footer">
1589 <div id="footer-text">
1590 Last updated 2014-04-14 16:26:14 PDT
1591 </div>
1592 </div>
1593 </body>
1594 </html>
OLDNEW
« no previous file with comments | « docs/html/depot_tools.html ('k') | docs/html/git-freeze.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698