| OLD | NEW |
| (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 | |
| OLD | NEW |