| OLD | NEW |
| 1 depot_tools_tutorial(7) | 1 depot_tools_tutorial(7) |
| 2 ======================= | 2 ======================= |
| 3 | 3 |
| 4 NAME | 4 NAME |
| 5 ---- | 5 ---- |
| 6 depot_tools_tutorial - A tutorial introduction to the Chromium depot_tools git | 6 depot_tools_tutorial - A tutorial introduction to the Chromium depot_tools git |
| 7 extensions. | 7 extensions. |
| 8 | 8 |
| 9 DESCRIPTION | 9 DESCRIPTION |
| 10 ----------- | 10 ----------- |
| 11 | 11 |
| 12 The Chromium linkgit:depot_tools[7] suite contains many git workflow-enhancing | 12 The Chromium linkgit:depot_tools[7] suite contains many git workflow-enhancing |
| 13 tools which are designed to work together to enable anyone to wrangle the | 13 tools which are designed to work together to enable anyone to wrangle the |
| 14 Chromium codebase expertly. This tutorial explains how to do development on | 14 Chromium codebase expertly. This tutorial explains how to do development on |
| 15 Chromium using these tools. This will cover: | 15 Chromium using these tools. This will cover: |
| 16 | 16 |
| 17 * <<_setting_up,Setting up>> | 17 * <<_setting_up,Setting up>> |
| 18 * <<_getting_the_code,Getting the code>> | 18 * <<_getting_the_code,Getting the code>> |
| 19 * <<_tl_dr_walkthrough,TL;DR Walkthrough>> | 19 * <<_tl_dr,TL;DR>> |
| 20 * <<_creating_uploading_a_cl,Creating / Uploading a CL>> | 20 * <<_creating_uploading_a_cl,Creating / Uploading a CL>> |
| 21 * <<_updating_the_code,Updating the code>> | 21 * <<_updating_the_code,Updating the code>> |
| 22 * <<_managing_multiple_cls,Managing multiple CLs>> | 22 * <<_managing_multiple_cls,Managing multiple CLs>> |
| 23 * <<_managing_dependent_cls,Managing dependent CLs>> | 23 * <<_managing_dependent_cls,Managing dependent CLs>> |
| 24 * <<_example_walkthrough,Example Walkthrough>> |
| 24 | 25 |
| 25 Please refer to the manpages (or `--help` output) for details about any of the | 26 Please refer to the manpages (or `--help` output) for details about any of the |
| 26 commands mentioned in this tutorial. | 27 commands mentioned in this tutorial. |
| 27 | 28 |
| 28 [NOTE] | 29 [NOTE] |
| 29 If your platform does not support manpages (or you prefer something a bit more | 30 If your platform does not support manpages (or you prefer something a bit more |
| 30 expressive than plain text) you can find all documentation in 'html' form in the | 31 expressive than plain text) you can find all documentation in 'html' form in the |
| 31 `[DEPOT_TOOLS]/docs/html` folder. | 32 `[DEPOT_TOOLS]/docs/html` folder. |
| 32 | 33 |
| 33 PREREQUISITES | 34 PREREQUISITES |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 [subs="quotes,attributes"] | 139 [subs="quotes,attributes"] |
| 139 ---- | 140 ---- |
| 140 [white]**$ git config --global user.name ``John Doe''** | 141 [white]**$ git config --global user.name ``John Doe''** |
| 141 [white]**$ git config --global user.email ``jdoe@email.com''** | 142 [white]**$ git config --global user.email ``jdoe@email.com''** |
| 142 [white]**$ git config --global core.autocrlf false** | 143 [white]**$ git config --global core.autocrlf false** |
| 143 [white]**$ git config --global core.filemode false** | 144 [white]**$ git config --global core.filemode false** |
| 144 [white]**$** # and for fun! | 145 [white]**$** # and for fun! |
| 145 [white]**$ git config --global color.ui true** | 146 [white]**$ git config --global color.ui true** |
| 146 ---- | 147 ---- |
| 147 | 148 |
| 149 TL;DR |
| 150 ----- |
| 151 [postsubs="quotes"] |
| 152 ---- |
| 153 [white]**$** # get the code |
| 154 [white]**$** # In an empty directory: |
| 155 [white]**$ fetch {chromium,blink,...}** |
| 156 |
| 157 [white]**$** # Update third_party repos and run pre-compile hooks |
| 158 [white]**$ gclient sync** |
| 159 |
| 160 [white]**$** # Make a new change and upload it for review |
| 161 [white]**$ git new-branch branchname** |
| 162 [white]**$** # repeat: [edit, git add, git commit] |
| 163 [white]**$ git cl upload** |
| 164 |
| 165 [white]**$** # After change is reviewed, commit with the CQ |
| 166 [white]**$ git cl set_commit** |
| 167 [white]**$** # Note that the committed hash which lands will /not/ match the |
| 168 [white]**$** # commit hashes of your local branch. |
| 169 ---- |
| 170 |
| 171 |
| 148 GETTING THE CODE | 172 GETTING THE CODE |
| 149 ---------------- | 173 ---------------- |
| 150 Pick an empty directory and run one of the following: | 174 Pick an empty directory and run one of the following: |
| 151 | 175 |
| 152 [subs="quotes"] | 176 [subs="quotes"] |
| 153 ---- | 177 ---- |
| 154 [white]**$ fetch chromium** # Basic checkout for desktop Chromium | 178 [white]**$ fetch chromium** # Basic checkout for desktop Chromium |
| 155 [white]**$ fetch blink** # Chromium code with Blink checked out to tip-of-tr
ee | 179 [white]**$ fetch blink** # Chromium code with Blink checked out to tip-of-tr
ee |
| 156 [white]**$ fetch android** # Chromium checkout for Android platform | 180 [white]**$ fetch android** # Chromium checkout for Android platform |
| 157 [white]**$ fetch ios** # Chromium checkout for iOS platform | 181 [white]**$ fetch ios** # Chromium checkout for iOS platform |
| (...skipping 12 matching lines...) Expand all Loading... |
| 170 | 194 |
| 171 [subs="specialcharacters,quotes"] | 195 [subs="specialcharacters,quotes"] |
| 172 ---- | 196 ---- |
| 173 [white]**$ cd src && ./build/install-build-deps.sh** | 197 [white]**$ cd src && ./build/install-build-deps.sh** |
| 174 ---- | 198 ---- |
| 175 | 199 |
| 176 And finally: | 200 And finally: |
| 177 | 201 |
| 178 [postsubs="quotes"] | 202 [postsubs="quotes"] |
| 179 ---- | 203 ---- |
| 180 [white]**$ gclient sync** <1> | 204 [white]**$ gclient sync** |
| 181 ---- | 205 ---- |
| 182 <1> This will pull all dependencies of the Chromium src checkout. You will need | 206 |
| 207 This will pull all dependencies of the Chromium src checkout. You will need |
| 183 to run this any time you update the main src checkout. | 208 to run this any time you update the main src checkout. |
| 184 | 209 |
| 185 | 210 |
| 186 TL;DR WALKTHROUGH | |
| 187 ----------------- | |
| 188 This section will demo what a typical workflow looks like when writing, updating
, | |
| 189 and committing multiple CLs. | |
| 190 | |
| 191 demo:tldr[] | |
| 192 | |
| 193 So there you have the basic flow. Note that you don't 'have' to do chromium | |
| 194 development using these tools. Any git workflow is compatible, as long as | |
| 195 `git cl upload` is able to upload good patches. | |
| 196 | |
| 197 | |
| 198 CREATING / UPLOADING A CL | 211 CREATING / UPLOADING A CL |
| 199 ------------------------- | 212 ------------------------- |
| 200 NOTE: The remainder of the tutorial assumes that your current working directory | 213 NOTE: The remainder of the tutorial assumes that your current working directory |
| 201 is the `src/` folder mentioned in <<_getting_the_code,Getting the code>>. | 214 is the `src/` folder mentioned in <<_getting_the_code,Getting the code>>. |
| 202 | 215 |
| 203 Each CL corresponds exactly with a single branch in git. Any time you want to | 216 Each CL corresponds exactly with a single branch in git. Any time you want to |
| 204 begin a new CL, just: | 217 begin a new CL, just: |
| 205 | 218 |
| 206 [subs="specialcharacters,quotes"] | 219 [subs="specialcharacters,quotes"] |
| 207 ---- | 220 ---- |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 Sometimes when dealing with dependent CLs, it turns out that you accidentally | 385 Sometimes when dealing with dependent CLs, it turns out that you accidentally |
| 373 based a branch on the wrong upstream, but since then you've committed changes to | 386 based a branch on the wrong upstream, but since then you've committed changes to |
| 374 it, or even based 'another' branch off of that one. Or you discover that you | 387 it, or even based 'another' branch off of that one. Or you discover that you |
| 375 have two independent CLs that would actually be much better off as dependent | 388 have two independent CLs that would actually be much better off as dependent |
| 376 CLs. In instances like these, you can check out the offending branch and use | 389 CLs. In instances like these, you can check out the offending branch and use |
| 377 linkgit:git-reparent-branch[1] to move it to track a different parent. Note that | 390 linkgit:git-reparent-branch[1] to move it to track a different parent. Note that |
| 378 this can also be used to move a branch from tracking `origin/master` to `lkgr` | 391 this can also be used to move a branch from tracking `origin/master` to `lkgr` |
| 379 or vice versa. | 392 or vice versa. |
| 380 | 393 |
| 381 | 394 |
| 395 EXAMPLE WALKTHROUGH |
| 396 ------------------- |
| 397 This section will demo what a typical workflow looks like when writing, |
| 398 updating, and committing multiple CLs. |
| 399 |
| 400 demo:walkthrough[] |
| 401 |
| 402 So there you have the basic flow. Note that you don't 'have' to do chromium |
| 403 development using these tools. Any git workflow is compatible, as long as |
| 404 `git cl upload` is able to upload good patches. |
| 405 |
| 406 |
| 382 CONCLUSION | 407 CONCLUSION |
| 383 ---------- | 408 ---------- |
| 384 Hopefully that gives you a good starting overview on Chromium development using | 409 Hopefully that gives you a good starting overview on Chromium development using |
| 385 'depot_tools'. If you have questions which weren't answered by this tutorial or | 410 'depot_tools'. If you have questions which weren't answered by this tutorial or |
| 386 the man pages for the tools (see the index of all tools here: | 411 the man pages for the tools (see the index of all tools here: |
| 387 linkgit:depot_tools[7]), please feel free to ask. | 412 linkgit:depot_tools[7]), please feel free to ask. |
| 388 | 413 |
| 389 | 414 |
| 390 GLOSSARY | 415 GLOSSARY |
| 391 -------- | 416 -------- |
| 392 | 417 |
| 393 CL:: | 418 CL:: |
| 394 A 'change-list'. This is a diff which you would like to commit to the | 419 A 'change-list'. This is a diff which you would like to commit to the |
| 395 codebase. | 420 codebase. |
| 396 | 421 |
| 397 DEPS:: | 422 DEPS:: |
| 398 A file in the chromium checkout which `gclient sync` uses to determine what | 423 A file in the chromium checkout which `gclient sync` uses to determine what |
| 399 dependencies to pull in. This file also contains 'hooks'. | 424 dependencies to pull in. This file also contains 'hooks'. |
| 400 | 425 |
| 401 LKGR:: | 426 LKGR:: |
| 402 Last Known Good Revision. This is a linkgit:git-tag[1] which tracks the last | 427 Last Known Good Revision. This is a linkgit:git-tag[1] which tracks the last |
| 403 version of `origin/master` which has passed the full set of testing on the | 428 version of `origin/master` which has passed the full set of testing on the |
| 404 link:http://build.chromium.org[main Chromium waterfall]. | 429 link:http://build.chromium.org[main Chromium waterfall]. |
| 405 | 430 |
| 406 include::_footer.txt[] | 431 include::_footer.txt[] |
| 407 | 432 |
| 408 // vim: ft=asciidoc: | 433 // vim: ft=asciidoc: |
| OLD | NEW |