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

Side by Side Diff: docs/man7/depot_tools_tutorial.7

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/man7/depot_tools.7 ('k') | docs/push_to_gs.sh » ('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 '\" t
2 .\" Title: depot_tools_tutorial
3 .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
4 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
5 .\" Date: 04/14/2014
6 .\" Manual: Chromium depot_tools Manual
7 .\" Source: depot_tools e722300
8 .\" Language: English
9 .\"
10 .TH "DEPOT_TOOLS_TUTORIAL" "7" "04/14/2014" "depot_tools e722300" "Chromium depo t_tools Manual"
11 .\" -----------------------------------------------------------------
12 .\" * Define some portability stuff
13 .\" -----------------------------------------------------------------
14 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15 .\" http://bugs.debian.org/507673
16 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
17 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18 .ie \n(.g .ds Aq \(aq
19 .el .ds Aq '
20 .\" -----------------------------------------------------------------
21 .\" * set default formatting
22 .\" -----------------------------------------------------------------
23 .\" disable hyphenation
24 .nh
25 .\" disable justification (adjust text to left margin only)
26 .ad l
27 .\" -----------------------------------------------------------------
28 .\" * MAIN CONTENT STARTS HERE *
29 .\" -----------------------------------------------------------------
30 .SH "NAME"
31 depot_tools_tutorial \- A tutorial introduction to the Chromium depot_tools git extensions\&.
32 .SH "DESCRIPTION"
33 .sp
34 The Chromium \fBdepot_tools\fR(7) suite contains many git workflow\-enhancing to ols which are designed to work together to enable anyone to wrangle the Chromium codebase expertly\&. This tutorial explains how to do development on Chromium u sing these tools\&. This will cover:
35 .sp
36 .RS 4
37 .ie n \{\
38 \h'-04'\(bu\h'+03'\c
39 .\}
40 .el \{\
41 .sp -1
42 .IP \(bu 2.3
43 .\}
44 Setting up
45 .RE
46 .sp
47 .RS 4
48 .ie n \{\
49 \h'-04'\(bu\h'+03'\c
50 .\}
51 .el \{\
52 .sp -1
53 .IP \(bu 2.3
54 .\}
55 Getting the code
56 .RE
57 .sp
58 .RS 4
59 .ie n \{\
60 \h'-04'\(bu\h'+03'\c
61 .\}
62 .el \{\
63 .sp -1
64 .IP \(bu 2.3
65 .\}
66 TL;DR
67 .RE
68 .sp
69 .RS 4
70 .ie n \{\
71 \h'-04'\(bu\h'+03'\c
72 .\}
73 .el \{\
74 .sp -1
75 .IP \(bu 2.3
76 .\}
77 Creating / Uploading a CL
78 .RE
79 .sp
80 .RS 4
81 .ie n \{\
82 \h'-04'\(bu\h'+03'\c
83 .\}
84 .el \{\
85 .sp -1
86 .IP \(bu 2.3
87 .\}
88 Updating the code
89 .RE
90 .sp
91 .RS 4
92 .ie n \{\
93 \h'-04'\(bu\h'+03'\c
94 .\}
95 .el \{\
96 .sp -1
97 .IP \(bu 2.3
98 .\}
99 Managing multiple CLs
100 .RE
101 .sp
102 .RS 4
103 .ie n \{\
104 \h'-04'\(bu\h'+03'\c
105 .\}
106 .el \{\
107 .sp -1
108 .IP \(bu 2.3
109 .\}
110 Managing dependent CLs
111 .RE
112 .sp
113 .RS 4
114 .ie n \{\
115 \h'-04'\(bu\h'+03'\c
116 .\}
117 .el \{\
118 .sp -1
119 .IP \(bu 2.3
120 .\}
121 Example Walkthrough
122 .RE
123 .sp
124 Please refer to the manpages (or \-\-help output) for details about any of the c ommands mentioned in this tutorial\&.
125 .if n \{\
126 .sp
127 .\}
128 .RS 4
129 .it 1 an-trap
130 .nr an-no-space-flag 1
131 .nr an-break-flag 1
132 .br
133 .ps +1
134 \fBNote\fR
135 .ps -1
136 .br
137 .sp
138 If your platform does not support manpages (or you prefer something a bit more e xpressive than plain text) you can find all documentation in \fIhtml\fR form in the [DEPOT_TOOLS]/docs/html folder\&.
139 .sp .5v
140 .RE
141 .SS "PREREQUISITES"
142 .sp
143 This tutorial assumes basic familiarity with git terminology and concepts\&. If you need to brush up on these, the following are very good resources:
144 .sp
145 .RS 4
146 .ie n \{\
147 \h'-04'\(bu\h'+03'\c
148 .\}
149 .el \{\
150 .sp -1
151 .IP \(bu 2.3
152 .\}
153 \m[blue]\fBThink like (a) Git\fR\m[]\&\s-2\u[1]\d\s+2
154 \- A lighthearted overview of git\&. If you\(cqre sorta\-familiar with git, but not
155 \fIcomfortable\fR
156 with it, then give this a look\&.
157 .RE
158 .sp
159 .RS 4
160 .ie n \{\
161 \h'-04'\(bu\h'+03'\c
162 .\}
163 .el \{\
164 .sp -1
165 .IP \(bu 2.3
166 .\}
167 \m[blue]\fBGit Immersion Tutorial\fR\m[]\&\s-2\u[2]\d\s+2
168 \- An in\-depth git tutorial\&.
169 .RE
170 .sp
171 .RS 4
172 .ie n \{\
173 \h'-04'\(bu\h'+03'\c
174 .\}
175 .el \{\
176 .sp -1
177 .IP \(bu 2.3
178 .\}
179 \m[blue]\fBpcottle\(cqs Visual Git Branching\fR\m[]\&\s-2\u[3]\d\s+2
180 \- An excellent interactive/graphical demo on how git handles commits, branches, and shows the operations git performs on them\&.
181 .RE
182 .sp
183 .RS 4
184 .ie n \{\
185 \h'-04'\(bu\h'+03'\c
186 .\}
187 .el \{\
188 .sp -1
189 .IP \(bu 2.3
190 .\}
191 \m[blue]\fBPro Git book\fR\m[]\&\s-2\u[4]\d\s+2
192 \- \(lqThe\(rq book for learning git from basics to advanced concepts\&. A bit d ry, but very through\&.
193 .RE
194 .sp
195 If you\(cqve tried these out and are still having some trouble getting started, there are \fImany\fR other resources online which should help\&. If you\(cqre \f Ireally\fR \fB\fIreally\fR\fR stuck, then chat up one of the Chromium infrastruc ture team members for some pointers\&.
196 .PP
197 Litmus Test
198 .RS 4
199 If you know what
200 git add,
201 git status,
202 git commit
203 do and you know
204 \fIessentially\fR
205 what
206 git rebase
207 does, then you should know enough to follow along\&.
208 .RE
209 .SH "SETTING UP"
210 .SS "GET DEPOT TOOLS"
211 .sp
212 Clone the \fIdepot_tools\fR repository:
213 .sp
214 .if n \{\
215 .RS 4
216 .\}
217 .nf
218 \fB$ git clone https://chromium\&.googlesource\&.com/chromium/tools/depot_tools\ fR
219 .fi
220 .if n \{\
221 .RE
222 .\}
223 .sp
224 .sp
225 Add \fIdepot_tools\fR to the \fIend\fR of your PATH and MANPATH (you will probab ly want to put this in your ~/\&.bashrc or ~/\&.zshrc)\&. Assuming you cloned \f Idepot_tools\fR to /path/to/depot_tools:
226 .sp
227 .if n \{\
228 .RS 4
229 .\}
230 .nf
231 \fB$ export PATH=$PATH:/path/to/depot_tools\fR
232 \fB$ export MANPATH=$MANPATH:/path/to/depot_tools/docs\fR \fB(1)\fR
233 .fi
234 .if n \{\
235 .RE
236 .\}
237 .sp
238 .sp
239 \fB1. \fRObserve that this path is
240 depot_tools/\fBdocs\fR\&.
241 .br
242 .SS "BOOTSTRAPPING CONFIGURATION"
243 .sp
244 If you have never used git before, you\(cqll need to set some global git configu rations; substitute your name and email address in the following commands:
245 .sp
246 .if n \{\
247 .RS 4
248 .\}
249 .nf
250 \fB$ git config \-\-global user\&.name \(lqJohn Doe\(rq\fR
251 \fB$ git config \-\-global user\&.email \(lqjdoe@email\&.com\(rq\fR
252 \fB$ git config \-\-global core\&.autocrlf false\fR
253 \fB$ git config \-\-global core\&.filemode false\fR
254 \fB$\fR # and for fun!
255 \fB$ git config \-\-global color\&.ui true\fR
256 .fi
257 .if n \{\
258 .RE
259 .\}
260 .sp
261 .SH "TL;DR"
262 .sp
263 .if n \{\
264 .RS 4
265 .\}
266 .nf
267 \fB$\fR # get the code
268 \fB$\fR # In an empty directory:
269 \fB$ fetch {chromium,blink,\&.\&.\&.}\fR
270
271 \fB$\fR # Update third_party repos and run pre\-compile hooks
272 \fB$ gclient sync\fR
273
274 \fB$\fR # Make a new change and upload it for review
275 \fB$ git new\-branch branchname\fR
276 \fB$\fR # repeat: [edit, git add, git commit]
277 \fB$ git cl upload\fR
278
279 \fB$\fR # After change is reviewed, commit with the CQ
280 \fB$ git cl set_commit\fR
281 \fB$\fR # Note that the committed hash which lands will /not/ match the
282 \fB$\fR # commit hashes of your local branch\&.
283 .fi
284 .if n \{\
285 .RE
286 .\}
287 .sp
288 .SH "GETTING THE CODE"
289 .sp
290 Pick an empty directory and run one of the following:
291 .sp
292 .if n \{\
293 .RS 4
294 .\}
295 .nf
296 \fB$ fetch chromium\fR # Basic checkout for desktop Chromium
297 \fB$ fetch blink\fR # Chromium code with Blink checked out to tip\-of\-tree
298 \fB$ fetch android\fR # Chromium checkout for Android platform
299 \fB$ fetch ios\fR # Chromium checkout for iOS platform
300 .fi
301 .if n \{\
302 .RE
303 .\}
304 .sp
305 .sp
306 When the fetch tool completes you should have the following in your working dire ctory:
307 .sp
308 .if n \{\
309 .RS 4
310 .\}
311 .nf
312 \fB\&.gclient\fR # A configuration file for you source checkout
313 \fBsrc/\fR # Top\-level Chromium source checkout\&.
314 .fi
315 .if n \{\
316 .RE
317 .\}
318 .sp
319 .sp
320 If you are on linux, then you\(cqll need to run:
321 .sp
322 .if n \{\
323 .RS 4
324 .\}
325 .nf
326 \fB$ cd src && \&./build/install\-build\-deps\&.sh\fR
327 .fi
328 .if n \{\
329 .RE
330 .\}
331 .sp
332 .sp
333 And finally:
334 .sp
335 .if n \{\
336 .RS 4
337 .\}
338 .nf
339 \fB$ gclient sync\fR
340 .fi
341 .if n \{\
342 .RE
343 .\}
344 .sp
345 .sp
346 This will pull all dependencies of the Chromium src checkout\&. You will need to run this any time you update the main src checkout\&.
347 .SH "CREATING / UPLOADING A CL"
348 .if n \{\
349 .sp
350 .\}
351 .RS 4
352 .it 1 an-trap
353 .nr an-no-space-flag 1
354 .nr an-break-flag 1
355 .br
356 .ps +1
357 \fBNote\fR
358 .ps -1
359 .br
360 .sp
361 The remainder of the tutorial assumes that your current working directory is the src/ folder mentioned in Getting the code\&.
362 .sp .5v
363 .RE
364 .sp
365 Each CL corresponds exactly with a single branch in git\&. Any time you want to begin a new CL, just:
366 .sp
367 .if n \{\
368 .RS 4
369 .\}
370 .nf
371 \fB$ git new\-branch <branch_name>\fR
372 .fi
373 .if n \{\
374 .RE
375 .\}
376 .sp
377 .sp
378 This will create and checkout a new branch named branch_name which will track th e default upstream (which is origin/master)\&. See \fBgit-new-branch\fR(1) for m ore features, such as the ability to track \fILKGR\fR\&.
379 .sp
380 Commit as many changes as you like to this branch\&. When you want to upload it for review, run:
381 .sp
382 .if n \{\
383 .RS 4
384 .\}
385 .nf
386 \fB$ git cl upload\fR
387 .fi
388 .if n \{\
389 .RE
390 .\}
391 .sp
392 .sp
393 This will take the diff of your branch against its upstream (origin/master), and will post it to the \m[blue]\fBChromium code review site\fR\m[]\&\s-2\u[5]\d\s+ 2\&.
394 .SH "UPDATING THE CODE"
395 .sp
396 Inevitably, you\(cqll want to pull in changes from the main Chromium repo\&. Thi s is pretty easy with \fIdepot_tools\fR:
397 .sp
398 .if n \{\
399 .RS 4
400 .\}
401 .nf
402 \fB$ git rebase\-update\fR
403 .fi
404 .if n \{\
405 .RE
406 .\}
407 .sp
408 .sp
409 This command will update all of your CLs to contain the latest code from their u pstreams\&. It will also automatically clean up CLs which have been committed an d a couple other nice things\&. See \fBgit-rebase-update\fR(1) for the full scoo p\&.
410 .sp
411 One thing to look out for are \fImerge conflicts\fR\&. These happen for exactly the same as they do with SVN, but the experience is a little more controllable w ith git\&. git rebase\-update will try to rebase all your branches for you, but if it encounters a merge conflict in one, it will halt and leave you in a rebase conflict state (see \fBgit-rebase\fR(1))\&. Resolving git rebase merge conflict s is beyond the scope of this tutorial, but there are many good sources online ( see the Prerequisites for some)\&.
412 .sp
413 Sometimes you\(cqre pretty certain that you\(cqve committed a certain branch, bu t git rebase\-update isn\(cqt able to tell that for sure\&. This is usually beca use your branch doesn\(cqt rebase cleanly\&. You could just delete the branch wi th git branch \-D <branch>, but you\(cqd like to double check the diff of your b ranch against its upstream before deleting it\&. If this is the case you can abo rt the rebase started by git rebase\-update, and then run \fBgit-squash-branch\f R(1) to flatten your branch into a single commit\&. When you run git rebase\-upd ate again, you\(cqll get a (hopefully) much smaller / saner diff\&. If it turns out you were wrong about your branch being fully committed, you can use \fBgit-r eflog\fR(1) to reset your branch back to where it was before\&. If the diff look s inconsequential, you can use git rebase \-\-skip to ignore it, and then git re base\-update will clean it up for you\&.
414 .sp
415 Once you\(cqre done resolving all of the merge conflict, just run git rebase\-up date, and it will pick up where it left off\&. Once the command has finished upd ating all of your branches, it will return you back to the branch you started on \&.
416 .if n \{\
417 .sp
418 .\}
419 .RS 4
420 .it 1 an-trap
421 .nr an-no-space-flag 1
422 .nr an-break-flag 1
423 .br
424 .ps +1
425 \fBNote\fR
426 .ps -1
427 .br
428 .sp
429 Running git rebase\-update will update all your branches, but it will not automa tically run gclient sync to update your dependencies\&.
430 .sp .5v
431 .RE
432 .SH "MANAGING MULTIPLE CLS"
433 .sp
434 Sometimes you want to work on more than one CL at once (say, you have a CL poste d for review and want to work on something else)\&. For each CL that you want to work on, just use git new\-branch <branchname>\&.
435 .sp
436 Once you start to have more than one CL at a time, it can be easy to lose your b earings\&. Fortunately, \fIdepot_tools\fR has two tools to help you out:
437 .sp
438 .if n \{\
439 .RS 4
440 .\}
441 .nf
442 \fB$ git map\fR
443 *\:\fB 7dcfe47 \fR (\:\fBfrozen_changes\fR\:) 2014\-03\-12 ~ FREEZE\&.unin dexed
444 * \fB4b0c180\fR 2014\-03\-12 ~ modfile
445 * \fB59a7cca\fR 2014\-03\-12 ~ a deleted file
446 * \fB6bec695\fR (\:origin/master\:) 2014\-03\-11 ~ Add neat feature \f B<(frozen_changes)\fR
447 * \fBd15a38a\fR 2014\-03\-11 ~ Epic README update
448 * \fBd559894\fR (\:\fBmaster\fR\:) 2014\-03\-11 ~ Important upstream chan ge
449 | * \fB9c311fd\fR (\:\fBcool_feature\fR\:) 2014\-03\-11 ~ Respond to CL com ments
450 | | * \fB2a1eeb2\fR (\:\fBsubfeature\fR\:) 2014\-03\-11 ~ integrate with Cool Service
451 | | * \fBd777af6\fR 2014\-03\-11 ~ slick commenting action
452 | |/
453 | * \fB265803a\fR 2014\-03\-11 ~ another improvement \fB<(subfeature)\fR
454 | * \fB6d831ac\fR (\:\fBspleen_tag\fR\:) 2014\-03\-11 ~ Refactor spleen
455 | * \fB82e74ab\fR 2014\-03\-11 ~ Add widget
456 |/
457 * \fBd08c5b3\fR (\:\fBbogus_noparent\fR\:) 2014\-03\-11 ~ Wonderful begin nings \fB<(cool_feature)\fR
458 .fi
459 .if n \{\
460 .RE
461 .\}
462 .sp
463 .sp
464 Note that this example repo is in dire need of a \fBgit-rebase-update\fR(1)!
465 .sp
466 .if n \{\
467 .RS 4
468 .\}
469 .nf
470 \fB$ git map\-branches\fR
471 origin/master
472 cool_feature
473 subfeature
474 frozen_changes *
475 master
476 .fi
477 .if n \{\
478 .RE
479 .\}
480 .sp
481
482 .PP
483 \fBgit-map\fR(1)
484 .RS 4
485 This tool shows you the history of all of your branches in a pseudo\-graphical f ormat\&. In particular, it will show you which commits all of your branches are on, which commit you currently have checked out, and more\&. Check out the doc f or the full details\&.
486 .RE
487 .PP
488 \fBgit-map-branches\fR(1)
489 .RS 4
490 This tool just shows you which branches you have in your repo, and thier upstrea m relationship to each other (as well as which branch you have checked out at th e moment)\&.
491 .RE
492 .sp
493 Additionally, sometimes you need to switch between branches, but you\(cqve got w ork in progress\&. You could use \fBgit-stash\fR(1), but that can be tricky to m anage because you need to remember which branches you stashed what changes on\&. Helpfully \fIdepot_tools\fR includes two tools which can greatly assist in case :
494 .sp
495 \fBgit-freeze\fR(1) allows you to put the current branch in \*(Aqsuspended anima tion\*(Aq by committing your changes to a specially\-named commit on the top of your current branch\&. When you come back to your branch later, you can just run \fBgit-thaw\fR(1) to get your work\-in\-progress changes back to what they were \&.
496 .sp
497 Another useful tool is \fBgit-rename-branch\fR(1)\&. Unlike git branch \-m <old> <new>, this tool will correctly preserve the upstream relationships of your bra nch compared to its downstreams\&.
498 .sp
499 Finally, take a look at \fBgit-upstream-diff\fR(1)\&. This will show you the com bined diff for all the commits on your branch against the upstream tracking bran ch\&. This is \fIexactly\fR what git cl upload will push up to code review\&. Ad ditionally, consider trying the \-\-wordwise argument to get a colorized per\-wo rd diff (instead of a per\-line diff)\&.
500 .SH "MANAGING DEPENDENT CLS"
501 .sp
502 Now that you know how to manage \fIindependent\fR CLs, we\(cqll see how to manag e \fIdependent\fR CLs\&. Dependent CLs are useful when your second (or third or fourth or \&...) CL depends on the changes in one of your other CLs (such as: CL 2 won\(cqt compile without CL 1, but you want to submit them as two separate re views)\&.
503 .sp
504 Like all of the other CLs we\(cqve created, we use \fBgit-new-branch\fR(1), but this time with an extra argument\&. First, git checkout the branch you want to b ase the new one on (i\&.e\&. CL 1), and then run:
505 .sp
506 .if n \{\
507 .RS 4
508 .\}
509 .nf
510 \fB$ git new\-branch \-\-upstream_current <branch_name>\fR
511 .fi
512 .if n \{\
513 .RE
514 .\}
515 .sp
516 .sp
517 This will make a new branch which tracks the \fIcurrent\fR branch as its upstrea m (as opposed to \fIorigin/master\fR)\&. All changes you commit to this branch w ill be in addition to the previous branch, but when you git cl upload, you will only upload the diff for the dependent (child) branch\&. You may have as many br anches nested in this fashion as you like\&.
518 .sp
519 \fBgit-map\fR(1) and \fBgit-map-branches\fR(1) are particularly helpful when you have dependent branches\&. In addition, there are two helper commands which let you traverse your working copy up and down this tree of branches: \fBgit-nav-up stream\fR(1) and \fBgit-nav-downstream\fR(1)\&.
520 .sp
521 Sometimes when dealing with dependent CLs, it turns out that you accidentally ba sed a branch on the wrong upstream, but since then you\(cqve committed changes t o it, or even based \fIanother\fR branch off of that one\&. Or you discover that you have two independent CLs that would actually be much better off as dependen t CLs\&. In instances like these, you can check out the offending branch and use \fBgit-reparent-branch\fR(1) to move it to track a different parent\&. Note tha t this can also be used to move a branch from tracking origin/master to lkgr or vice versa\&.
522 .SH "EXAMPLE WALKTHROUGH"
523 .sp
524 This section will demo what a typical workflow looks like when writing, updating , and committing multiple CLs\&.
525 .sp
526
527 .sp
528 .if n \{\
529 .RS 4
530 .\}
531 .nf
532 \fB$ fetch chromium\fR
533 \&.\&.\&. truncated output \&.\&.\&.
534 \fB$ cd src\fR
535 .fi
536 .if n \{\
537 .RE
538 .\}
539 .sp
540 (only on linux)
541 .sp
542 .if n \{\
543 .RS 4
544 .\}
545 .nf
546 \fB$ \&./build/install\-build\-deps\&.sh\fR
547 \&.\&.\&. truncated output \&.\&.\&.
548 .fi
549 .if n \{\
550 .RE
551 .\}
552 .sp
553 Pull in all dependencies for HEAD
554 .sp
555 .if n \{\
556 .RS 4
557 .\}
558 .nf
559 \fB$ gclient sync\fR
560 \&.\&.\&. truncated output \&.\&.\&.
561 .fi
562 .if n \{\
563 .RE
564 .\}
565 .sp
566 Let\*(Aqs fix something!
567 .sp
568 .if n \{\
569 .RS 4
570 .\}
571 .nf
572 \fB$ git new\-branch fix_typo\fR
573 \fB$ echo \-e \*(Aq/Banana\ens/Banana/Kuun\enwq\*(Aq | ed build/whitespace_file\ &.txt\fR
574 1503
575 It was a Domo\-Banana\&.
576 It was a Domo\-Kuun\&.
577 1501
578 \fB$ git commit \-am \*(AqFix terrible typo\&.\*(Aq\fR
579 [fix_typo 615ffa7] Fix terrible typo\&.
580 1 file changed, 1 insertion(+), 1 deletion(\-)
581 \fB$ git map\fR
582 \fB* 615ffa7 \fR (\fBfix_typo\fR) 2014\-04\-10 ~ Fix terrible typo\&.
583 * \fBbeec6f4 \fR (origin/master, origin/HEAD) 2014\-04\-10 ~ Make ReflectorIm pl use mailboxes\fB <(fix_typo)\fR
584 * \fB41290e0 \fR 2014\-04\-10 ~ don\*(Aqt use glibc\-specific execinfo\&.h on uclibc builds
585 * \fBa76fde7 \fR 2014\-04\-10 ~ [fsp] Add requestUnmount() method together wi th the request manager\&.
586 * \fB9de7a71 \fR 2014\-04\-10 ~ linux_aura: Use system configuration for midd le clicking the titlebar\&.
587 * \fB073b0c2 \fR 2014\-04\-10 ~ ContentView\->ContentViewCore in ContentViewR enderView
588 * \fB2250f53 \fR 2014\-04\-10 ~ ozone: evdev: Filter devices by path
589 * \fB33a7a74 \fR 2014\-04\-10 ~ Always output seccomp error messages to stder r
590 \fB$ git status\fR
591 On branch fix_typo
592 Your branch is ahead of \*(Aqorigin/master\*(Aq by 1 commit\&.
593 (use "git push" to publish your local commits)
594
595 nothing to commit, working directory clean
596 \fB$ git cl upload \-r domo@chromium\&.org \-\-send\-mail\fR
597 \&.\&.\&. truncated output \&.\&.\&.
598 .fi
599 .if n \{\
600 .RE
601 .\}
602 .sp
603 While we wait for feedback, let\*(Aqs do something else\&.
604 .sp
605 .if n \{\
606 .RS 4
607 .\}
608 .nf
609 \fB$ git new\-branch chap2\fR
610 \fB$ git map\-branches\fR
611 \fBorigin/master
612 chap2 *
613 \fR fix_typo
614 \fB$ cat >> build/whitespace_file\&.txt <<EOF\fR
615
616 "You recall what happened on Mulholland drive?" The ceiling fan rotated slowly
617 overhead, barely disturbing the thick cigarette smoke\&. No doubt was left about
618 when the fan was last cleaned\&.
619 EOF
620 \fB$ git status\fR
621 On branch chap2
622 Your branch is up\-to\-date with \*(Aqorigin/master\*(Aq\&.
623
624 Changes not staged for commit:
625 (use "git add <file>\&.\&.\&." to update what will be committed)
626 (use "git checkout \-\- <file>\&.\&.\&." to discard changes in working directo ry)
627
628 modified: build/whitespace_file\&.txt
629
630 no changes added to commit (use "git add" and/or "git commit \-a")
631 .fi
632 .if n \{\
633 .RE
634 .\}
635 .sp
636 Someone on the code review pointed out that our typo\-fix has a typo :( We\*(Aqr e still working on \*(Aqchap2\*(Aq but we really want to land \*(Aqfix_typo\*(Aq , so let\*(Aqs switch over and fix it\&.
637 .sp
638 .if n \{\
639 .RS 4
640 .\}
641 .nf
642 \fB$ git freeze\fR
643 \fB$ git checkout fix_typo\fR
644 Switched to branch \*(Aqfix_typo\*(Aq
645 Your branch is ahead of \*(Aqorigin/master\*(Aq by 1 commit\&.
646 (use "git push" to publish your local commits)
647 \fB$ echo \-e \*(Aq/Kuun\ens/Kuun/Kun\enwq\*(Aq | ed build/whitespace_file\&.txt \fR
648 1501
649 It was a Domo\-Kuun\&.
650 It was a Domo\-Kun\&.
651 1500
652 \fB$ git upstream\-diff \-\-wordwise\fR
653 \fBdiff \-\-git a/build/whitespace_file\&.txt b/build/whitespace_file\&.txt\fR
654 \fBindex 3eba355\&.\&.57cdcee 100644\fR
655 \fB\-\-\- a/build/whitespace_file\&.txt\fR
656 \fB+++ b/build/whitespace_file\&.txt\fR
657 @@ \-17,7 +17,7 @@ swept up the streets (for it is in London that our scene lies ), rattling along
658 the housetops, and fiercely agitating the scanty flame of the lamps that
659 struggled against the elements\&. A hooded figure emerged\&.
660
661 It was a Domo\-BananaKun\&.
662
663 "What took you so long?", inquired his wife\&.
664
665 \fB$ git commit \-am \*(AqFix typo for good!\*(Aq\fR
666 [fix_typo 2c0ad9c] Fix typo for good!
667 1 file changed, 1 insertion(+), 1 deletion(\-)
668 \fB$ git cl upload\fR
669 \&.\&.\&. truncated output \&.\&.\&.
670 .fi
671 .if n \{\
672 .RE
673 .\}
674 .sp
675 Since we got lgtm, let the CQ land it\&.
676 .sp
677 .if n \{\
678 .RS 4
679 .\}
680 .nf
681 \fB$ git cl set_commit\fR
682 \fB$ git map\fR
683 * \fB0e2e52e \fR (\fBchap2\fR) 2014\-04\-10 ~ FREEZE\&.unindexed
684 | \fB* 2c0ad9c \fR (\fBfix_typo\fR) 2014\-04\-10 ~ Fix typo for good!
685 | * \fB615ffa7 \fR 2014\-04\-10 ~ Fix terrible typo\&.
686 |/
687 * \fBbeec6f4 \fR (origin/master, origin/HEAD) 2014\-04\-10 ~ Make ReflectorIm pl use mailboxes\fB <(chap2, fix_typo)\fR
688 * \fB41290e0 \fR 2014\-04\-10 ~ don\*(Aqt use glibc\-specific execinfo\&.h on uclibc builds
689 * \fBa76fde7 \fR 2014\-04\-10 ~ [fsp] Add requestUnmount() method together wi th the request manager\&.
690 * \fB9de7a71 \fR 2014\-04\-10 ~ linux_aura: Use system configuration for midd le clicking the titlebar\&.
691 * \fB073b0c2 \fR 2014\-04\-10 ~ ContentView\->ContentViewCore in ContentViewR enderView
692 * \fB2250f53 \fR 2014\-04\-10 ~ ozone: evdev: Filter devices by path
693 * \fB33a7a74 \fR 2014\-04\-10 ~ Always output seccomp error messages to stder r
694 .fi
695 .if n \{\
696 .RE
697 .\}
698 .sp
699 Switch back to where we were using the nav* commands (for fun\&.\&.\&. git check out would work here too)
700 .sp
701 .if n \{\
702 .RS 4
703 .\}
704 .nf
705 \fB$ git map\-branches\fR
706 origin/master
707 chap2
708 \fB fix_typo *
709 $ git nav\-upstream\fR
710 Note: checking out \*(Aqorigin/master\*(Aq\&.
711
712 You are in \*(Aqdetached HEAD\*(Aq state\&. You can look around, make experiment al
713 changes and commit them, and you can discard any commits you make in this
714 state without impacting any branches by performing another checkout\&.
715
716 If you want to create a new branch to retain commits you create, you may
717 do so (now or later) by using \-b with the checkout command again\&. Example:
718
719 git checkout \-b new_branch_name
720
721 HEAD is now at beec6f4\&.\&.\&. Make ReflectorImpl use mailboxes
722 \fB$ git nav\-downstream\fR
723 Please select a downstream branch
724 0\&. chap2
725 1\&. fix_typo
726 Selection (0\-1)[0]: 0
727 Previous HEAD position was beec6f4\&.\&.\&. Make ReflectorImpl use mailboxes
728 Switched to branch \*(Aqchap2\*(Aq
729 Your branch is ahead of \*(Aqorigin/master\*(Aq by 1 commit\&.
730 (use "git push" to publish your local commits)
731 \fB$ git map\-branches\fR
732 origin/master
733 \fB chap2 *
734 \fR fix_typo
735 .fi
736 .if n \{\
737 .RE
738 .\}
739 .sp
740 Now we can pick up on chapter2 where we left off\&.
741 .sp
742 .if n \{\
743 .RS 4
744 .\}
745 .nf
746 \fB$ git thaw\fR
747 \fB$ git diff\fR
748 \fBdiff \-\-git a/build/whitespace_file\&.txt b/build/whitespace_file\&.txt\fR
749 \fBindex 3eba355\&.\&.9d08d9d 100644\fR
750 \fB\-\-\- a/build/whitespace_file\&.txt\fR
751 \fB+++ b/build/whitespace_file\&.txt\fR
752 @@ \-34,3 +34,7 @@ with his fork, watching the runny jelly spread and pool acros s his plate,
753 like the blood of a dying fawn\&. \e"It reminds me of that time \-\-\e" he star ted, as
754 his wife cut in quickly: \e"\-\- please\&. I can\*(Aqt bear to hear it\&.\e"\&. A flury of
755 images coming from the past flowed through his mind\&.
756 +
757 +"You recall what happened on Mulholland drive?" The ceiling fan rotated slowly
758 +overhead, barely disturbing the thick cigarette smoke\&. No doubt was left abou t
759 +when the fan was last cleaned\&.
760 \fB$ cat >> build/whitespace_file\&.txt <<EOF\fR
761
762 There was an poignant pause\&.
763 EOF
764 \fB$ git diff\fR
765 \fBdiff \-\-git a/build/whitespace_file\&.txt b/build/whitespace_file\&.txt\fR
766 \fBindex 3eba355\&.\&.e3a55de 100644\fR
767 \fB\-\-\- a/build/whitespace_file\&.txt\fR
768 \fB+++ b/build/whitespace_file\&.txt\fR
769 @@ \-34,3 +34,9 @@ with his fork, watching the runny jelly spread and pool acros s his plate,
770 like the blood of a dying fawn\&. \e"It reminds me of that time \-\-\e" he star ted, as
771 his wife cut in quickly: \e"\-\- please\&. I can\*(Aqt bear to hear it\&.\e"\&. A flury of
772 images coming from the past flowed through his mind\&.
773 +
774 +"You recall what happened on Mulholland drive?" The ceiling fan rotated slowly
775 +overhead, barely disturbing the thick cigarette smoke\&. No doubt was left abou t
776 +when the fan was last cleaned\&.
777 +
778 +There was an poignant pause\&.
779 \fB$ git commit \-am \*(AqFinish chapter 2\*(Aq\fR
780 [chap2 ceef712] Finish chapter 2
781 1 file changed, 6 insertions(+)
782 \fB$ git map\fR
783 \fB* ceef712 \fR (\fBchap2\fR) 2014\-04\-10 ~ Finish chapter 2
784 | * \fB2c0ad9c \fR (\fBfix_typo\fR) 2014\-04\-10 ~ Fix typo for good!
785 | * \fB615ffa7 \fR 2014\-04\-10 ~ Fix terrible typo\&.
786 |/
787 * \fBbeec6f4 \fR (origin/master, origin/HEAD) 2014\-04\-10 ~ Make ReflectorIm pl use mailboxes\fB <(chap2, fix_typo)\fR
788 * \fB41290e0 \fR 2014\-04\-10 ~ don\*(Aqt use glibc\-specific execinfo\&.h on uclibc builds
789 * \fBa76fde7 \fR 2014\-04\-10 ~ [fsp] Add requestUnmount() method together wi th the request manager\&.
790 * \fB9de7a71 \fR 2014\-04\-10 ~ linux_aura: Use system configuration for midd le clicking the titlebar\&.
791 * \fB073b0c2 \fR 2014\-04\-10 ~ ContentView\->ContentViewCore in ContentViewR enderView
792 * \fB2250f53 \fR 2014\-04\-10 ~ ozone: evdev: Filter devices by path
793 * \fB33a7a74 \fR 2014\-04\-10 ~ Always output seccomp error messages to stder r
794 \fB$ git cl upload \-r domo@chromium\&.org \-\-send\-mail\fR
795 \&.\&.\&. truncated output \&.\&.\&.
796 .fi
797 .if n \{\
798 .RE
799 .\}
800 .sp
801 We poke a committer until they lgtm :)
802 .sp
803 .if n \{\
804 .RS 4
805 .\}
806 .nf
807 \fB$ git cl set_commit\fR
808 .fi
809 .if n \{\
810 .RE
811 .\}
812 .sp
813 While that runs through the CQ, let\*(Aqs get started on chapter 3\&. Since we k now that chapter 3 depends on chapter 2, we\*(Aqll track the current chapter2 br anch\&.
814 .sp
815 .if n \{\
816 .RS 4
817 .\}
818 .nf
819 \fB$ git new\-branch \-\-upstream_current chap3\fR
820 \fB$ cat >> build/whitespace_file\&.txt <<EOF\fR
821
822 CHAPTER 3:
823 Mr\&. Usagi felt that something wasn\*(Aqt right\&. Shortly after the Domo\-Kun left he
824 began feeling sick\&.
825 EOF
826 \fB$ git commit \-am \*(Aqbeginning of chapter 3\*(Aq\fR
827 [chap3 7d4238a] beginning of chapter 3
828 1 file changed, 4 insertions(+)
829 \fB$ git map\fR
830 \fB* 7d4238a \fR (\fBchap3\fR) 2014\-04\-10 ~ beginning of chapter 3
831 * \fBceef712 \fR (\fBchap2\fR) 2014\-04\-10 ~ Finish chapter 2\fB <(chap3) \fR
832 | * \fB2c0ad9c \fR (\fBfix_typo\fR) 2014\-04\-10 ~ Fix typo for good!
833 | * \fB615ffa7 \fR 2014\-04\-10 ~ Fix terrible typo\&.
834 |/
835 * \fBbeec6f4 \fR (origin/master, origin/HEAD) 2014\-04\-10 ~ Make ReflectorIm pl use mailboxes\fB <(chap2, fix_typo)\fR
836 * \fB41290e0 \fR 2014\-04\-10 ~ don\*(Aqt use glibc\-specific execinfo\&.h on uclibc builds
837 * \fBa76fde7 \fR 2014\-04\-10 ~ [fsp] Add requestUnmount() method together wi th the request manager\&.
838 * \fB9de7a71 \fR 2014\-04\-10 ~ linux_aura: Use system configuration for midd le clicking the titlebar\&.
839 * \fB073b0c2 \fR 2014\-04\-10 ~ ContentView\->ContentViewCore in ContentViewR enderView
840 * \fB2250f53 \fR 2014\-04\-10 ~ ozone: evdev: Filter devices by path
841 * \fB33a7a74 \fR 2014\-04\-10 ~ Always output seccomp error messages to stder r
842 .fi
843 .if n \{\
844 .RE
845 .\}
846 .sp
847 We haven\*(Aqt updated the code in a while, so let\*(Aqs do that now\&.
848 .sp
849 .if n \{\
850 .RS 4
851 .\}
852 .nf
853 \fB$ git rebase\-update\fR
854 Fetching origin
855 From https://upstream
856 beec6f4\&.\&.59cdb73 master \-> origin/master
857 Rebasing: chap2
858 Rebasing: fix_typo
859 Failed! Attempting to squash fix_typo \&.\&.\&. Success!
860 Rebasing: chap3
861 Deleted branch fix_typo (was 5d26fec)\&.
862 Reparented chap3 to track origin/master (was tracking chap2)
863 Deleted branch chap2 (was 5d26fec)\&.
864 .fi
865 .if n \{\
866 .RE
867 .\}
868 .sp
869 Well look at that\&. The CQ landed our typo and chapter2 branches already and gi t rebase\-update cleaned them up for us\&.
870 .sp
871 .if n \{\
872 .RS 4
873 .\}
874 .nf
875 \fB$ gclient sync\fR
876 \&.\&.\&. truncated output \&.\&.\&.
877 \fB$ git map\fR
878 \fB* 93fe917 \fR (\fBchap3\fR) 2014\-04\-10 ~ beginning of chapter 3
879 * \fB5d26fec \fR (origin/master, origin/HEAD) 2014\-04\-10 ~ Finish chapter 2 \fB <(chap3)\fR
880 * \fBdf7fefb \fR 2014\-04\-10 ~ Revert 255617, due to it not tracking use of the link doctor page properly\&.
881 * \fB4b39cda \fR 2014\-04\-10 ~ Fix terrible typo\&.
882 * \fB248c5b6 \fR 2014\-04\-10 ~ Temporarily CHECK(trial) in ChromeRenderProce ssObserver::OnSetFieldTrialGroup\&.
883 * \fB8171df8 \fR 2014\-04\-10 ~ Remove AMD family check for the flapper crypt o accelerator\&.
884 * \fBd6a30d2 \fR 2014\-04\-10 ~ Change the Pica load benchmark to listen for the polymer\-ready event
885 * \fBbeec6f4 \fR 2014\-04\-10 ~ Make ReflectorImpl use mailboxes
886 * \fB41290e0 \fR 2014\-04\-10 ~ don\*(Aqt use glibc\-specific execinfo\&.h on uclibc builds
887 * \fBa76fde7 \fR 2014\-04\-10 ~ [fsp] Add requestUnmount() method together wi th the request manager\&.
888 * \fB9de7a71 \fR 2014\-04\-10 ~ linux_aura: Use system configuration for midd le clicking the titlebar\&.
889 * \fB073b0c2 \fR 2014\-04\-10 ~ ContentView\->ContentViewCore in ContentViewR enderView
890 * \fB2250f53 \fR 2014\-04\-10 ~ ozone: evdev: Filter devices by path
891 * \fB33a7a74 \fR 2014\-04\-10 ~ Always output seccomp error messages to stder r
892 .fi
893 .if n \{\
894 .RE
895 .\}
896 .sp
897 Someone on IRC mentions that they actually landed a chapter 3 already! We should pull their changes before continuing\&. Brace for a code conflict!
898 .sp
899 .if n \{\
900 .RS 4
901 .\}
902 .nf
903 \fB$ git rebase\-update\fR
904 Fetching origin
905 From https://upstream
906 5d26fec\&.\&.59cdb73 master \-> origin/master
907 Rebasing: chap2
908 \&.\&.\&. lots of output, it\*(Aqs a conflict alright :(\&.\&.\&.
909 \fB$ git diff\fR
910 \fBdiff \-\-cc build/whitespace_file\&.txt\fR
911 \fBindex 1293282,f903ea2\&.\&.0000000\fR
912 \fB\-\-\- a/build/whitespace_file\&.txt\fR
913 \fB+++ b/build/whitespace_file\&.txt\fR
914 @@@ \-42,4 \-42,5 +42,9 @@@ when the fan was last cleaned
915 There was an poignant pause\&.
916
917 CHAPTER 3:
918 ++<<<<<<< HEAD
919 +Hilariousness! This chapter is awesome!
920 ++=======
921 + Mr\&. Usagi felt that something wasn\*(Aqt right\&. Shortly after the Domo\-Ku n left he
922 + began feeling sick\&.
923 ++>>>>>>> beginning of chapter 3
924 .fi
925 .if n \{\
926 .RE
927 .\}
928 .sp
929 Oh, well, that\*(Aqs not too bad\&. In fact\&.\&.\&. that\*(Aqs a terrible chapt er 3!
930 .sp
931 .if n \{\
932 .RS 4
933 .\}
934 .nf
935 \fB$ $EDITOR build/whitespace_file\&.txt\fR
936 \&.\&.\&. /me deletes bad chapter 3 \&.\&.\&.
937 \fB$ git add build/whitespace_file\&.txt\fR
938 \fB$ git diff \-\-cached\fR
939 \fBdiff \-\-git a/build/whitespace_file\&.txt b/build/whitespace_file\&.txt\fR
940 \fBindex 1293282\&.\&.f903ea2 100644\fR
941 \fB\-\-\- a/build/whitespace_file\&.txt\fR
942 \fB+++ b/build/whitespace_file\&.txt\fR
943 @@ \-42,4 +42,5 @@ when the fan was last cleaned\&.
944 There was an poignant pause\&.
945
946 CHAPTER 3:
947 \-Hilariousness! This chapter is awesome!
948 +Mr\&. Usagi felt that something wasn\*(Aqt right\&. Shortly after the Domo\-Kun left he
949 +began feeling sick\&.
950 .fi
951 .if n \{\
952 .RE
953 .\}
954 .sp
955 Much better
956 .sp
957 .if n \{\
958 .RS 4
959 .\}
960 .nf
961 \fB$ git rebase \-\-continue\fR
962 Applying: beginning of chapter 3
963 \fB$ git rebase\-update\fR
964 Fetching origin
965 chap3 up\-to\-date
966 \fB$ gclient sync\fR
967 \&.\&.\&. truncated output \&.\&.\&.
968 \fB$ git map\fR
969 \fB* 1cb4f5b \fR (\fBchap3\fR) 2014\-04\-10 ~ beginning of chapter 3
970 * \fB59cdb73 \fR (origin/master, origin/HEAD) 2014\-04\-10 ~ Refactor data in terchange format\&.\fB <(chap3)\fR
971 * \fB34676a3 \fR 2014\-04\-10 ~ Ensure FS is exited for all not\-in\-same\-pa ge navigations\&.
972 * \fB7d4784e \fR 2014\-04\-10 ~ Add best chapter2 ever!
973 * \fB5d26fec \fR 2014\-04\-10 ~ Finish chapter 2
974 * \fBdf7fefb \fR 2014\-04\-10 ~ Revert 255617, due to it not tracking use of the link doctor page properly\&.
975 * \fB4b39cda \fR 2014\-04\-10 ~ Fix terrible typo\&.
976 * \fB248c5b6 \fR 2014\-04\-10 ~ Temporarily CHECK(trial) in ChromeRenderProce ssObserver::OnSetFieldTrialGroup\&.
977 * \fB8171df8 \fR 2014\-04\-10 ~ Remove AMD family check for the flapper crypt o accelerator\&.
978 * \fBd6a30d2 \fR 2014\-04\-10 ~ Change the Pica load benchmark to listen for the polymer\-ready event
979 * \fBbeec6f4 \fR 2014\-04\-10 ~ Make ReflectorImpl use mailboxes
980 * \fB41290e0 \fR 2014\-04\-10 ~ don\*(Aqt use glibc\-specific execinfo\&.h on uclibc builds
981 * \fBa76fde7 \fR 2014\-04\-10 ~ [fsp] Add requestUnmount() method together wi th the request manager\&.
982 * \fB9de7a71 \fR 2014\-04\-10 ~ linux_aura: Use system configuration for midd le clicking the titlebar\&.
983 * \fB073b0c2 \fR 2014\-04\-10 ~ ContentView\->ContentViewCore in ContentViewR enderView
984 * \fB2250f53 \fR 2014\-04\-10 ~ ozone: evdev: Filter devices by path
985 * \fB33a7a74 \fR 2014\-04\-10 ~ Always output seccomp error messages to stder r
986 \fB$ git cl upload\fR
987 \&.\&.\&. truncated output \&.\&.\&.
988 .fi
989 .if n \{\
990 .RE
991 .\}
992 .sp
993 .sp
994 So there you have the basic flow\&. Note that you don\(cqt \fIhave\fR to do chro mium development using these tools\&. Any git workflow is compatible, as long as git cl upload is able to upload good patches\&.
995 .SH "CONCLUSION"
996 .sp
997 Hopefully that gives you a good starting overview on Chromium development using \fIdepot_tools\fR\&. If you have questions which weren\(cqt answered by this tut orial or the man pages for the tools (see the index of all tools here: \fBdepot_ tools\fR(7)), please feel free to ask\&.
998 .SH "GLOSSARY"
999 .PP
1000 CL
1001 .RS 4
1002 A
1003 \fIchange\-list\fR\&. This is a diff which you would like to commit to the codeb ase\&.
1004 .RE
1005 .PP
1006 DEPS
1007 .RS 4
1008 A file in the chromium checkout which
1009 gclient sync
1010 uses to determine what dependencies to pull in\&. This file also contains
1011 \fIhooks\fR\&.
1012 .RE
1013 .PP
1014 LKGR
1015 .RS 4
1016 Last Known Good Revision\&. This is a
1017 \fBgit-tag\fR(1)
1018 which tracks the last version of
1019 origin/master
1020 which has passed the full set of testing on the
1021 \m[blue]\fBmain Chromium waterfall\fR\m[]\&\s-2\u[6]\d\s+2\&.
1022 .RE
1023 .SH "CHROMIUM DEPOT_TOOLS"
1024 .sp
1025 Part of the chromium \fBdepot_tools\fR(7) suite\&. These tools are meant to assi st with the development of chromium and related projects\&. Download the tools f rom \m[blue]\fBhere\fR\m[]\&\s-2\u[7]\d\s+2\&.
1026 .SH "NOTES"
1027 .IP " 1." 4
1028 Think like (a) Git
1029 .RS 4
1030 \%http://think-like-a-git.net/
1031 .RE
1032 .IP " 2." 4
1033 Git Immersion Tutorial
1034 .RS 4
1035 \%http://gitimmersion.com/
1036 .RE
1037 .IP " 3." 4
1038 pcottle\(cqs Visual Git Branching
1039 .RS 4
1040 \%http://pcottle.github.io/learnGitBranching
1041 .RE
1042 .IP " 4." 4
1043 Pro Git book
1044 .RS 4
1045 \%http://git-scm.com/book
1046 .RE
1047 .IP " 5." 4
1048 Chromium code review site
1049 .RS 4
1050 \%https://codereview.chromium.org
1051 .RE
1052 .IP " 6." 4
1053 main Chromium waterfall
1054 .RS 4
1055 \%http://build.chromium.org
1056 .RE
1057 .IP " 7." 4
1058 here
1059 .RS 4
1060 \%https://chromium.googlesource.com/chromium/tools/depot_tools.git
1061 .RE
OLDNEW
« no previous file with comments | « docs/man7/depot_tools.7 ('k') | docs/push_to_gs.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698