The Chromium Chronicle #22: Know Thy (Depot) Tools
Episode 22: by Edward Lesmes in San Francisco, CA (June, 2021)
Previous episodes
Depot Tools is a collection of tools built on top of Git to simplify the workflow of developers contributing to the Chromium codebase and related projects. It contains tools to get the code, upload changes for review, keep your checkout up to date, and more!
Get the code
Run fetch chromium
in an empty directory. The fetch
command can also be used to get the code for other repositories like v8, or webrtc. See fetch help
for a full list.
Upload a change for review
Each CL corresponds to a single branch in git, so start by running git new-branch <branch_name>
to create a new branch. Commit as many changes as you like to this branch and run git cl upload
when it's ready for review.
git cl issue
will let you know what CL your branch is associated with. Use git cl issue <issue>
to change it.
Keep your checkout up to date
Run git rebase-update
periodically to sync local branches to their upstream, and gclient sync
to update third_party
repos and run pre-compile hooks.
Manage multiple CLs
git cl status
will show CLs associated with local branches and their status (unsent, lgtm, closed, etc).git freeze
andgit thaw
work likegit stash
, but keep track of the branch associated with the stashed changes.git map
will show you the history of all of your branches, andgit map-branches
will show you the upstream relationships between all your branches.git new-branch --upstream_current <branch_name>
creates a new branch on top of an existing branch. Usegit rebase-update
to rebase a dependent branch after making changes to the base branch.
Keep working on an existing CL on a different machine
Run git cl patch <issue_url>
to cherry-pick an existing CL on top of the current branch. Note that it will associate the current branch with the patched CL. Use git cl patch <issue_url> --reapply
to discard local changes and reapply the issue.
And more
Check out the depot tools tutorial and explore the help messages for each command to discover all the cool features, and let us know at if you have any issues!