the Chromium logo

The Chromium Projects

Using depot_tools

View the updated depot_tools documentation here. These same docs are also available as man pages. Not all the information on this page has been migrated to the man pages yet, so this resource will stay around for a while, but where there are discrepancies, the man pages should be considered authoritative.

The depot_tools tutorial walks through a few key scenarios like managing branches.

Introduction

Chromium uses a package of scripts, the depot_tools, to manage interaction with the Chromium source code repository and the Chromium development process. It contains the following utilities:

It is highly encouraged to look around and open the files in a text editor as this page can quickly become outdated.

Please keep this page the man pages updated!

Installing

See the depot_tools_tutorial for set-up instructions.

Help!

These tools don't have man pages but have integrated help! Try all of these commands! If the doc is not adequate, send patches to fix them.

Otherwise, there are many great text editors that can help you out to read what the tools are actually doing.

gclient

gclient is a python script to manage a workspace of modular dependencies that are each checked out independently from different subversion or git repositories. Features are:

.gclient file

It's the primary file. It is, in fact, a python script. It specifies the following variables:

Additional variables are ignored.

Each project described in the solutions array can contain an optional DEPS file that will be processed. The .gclient file is generated with gclient config <url> or by hand. Each solutions entry is a dictionary that can contain the following variables:

DEPS file

A DEPS file specifies dependencies of a project. It is in fact a python script. It specifies the following variables:

Additional variables are ignored. Special keywords are:

Pinned deps

Each dependency checkout URL can (and usually does) contain a revision number or git hash, which means you're going to check out and build from that specific revision of the module in question. We call that pinned deps. The advantage is that you can build from a known working revision, even if it comes from a completely different SCM repository or going back in time. The drawback is you have to update the revision number(s) constantly, what we call deps rolls.

DEPS examples

Chromium's src/DEPS is a fairly complex example that will show all the possibilities of a DEPS file.

Sending patches

Contributing code is done the same way as in other Chromium repositories.

Disabling auto update

The gclient and git-cl scripts are actually wrapper scripts that will, by default, always update the depot_tools to the latest versions of the tools checked in at https://chromium.googlesource.com/chromium/tools/depot_tools.git. If for some reason you wish to disable this auto-update behavior, either:

Note: If you aren't using either of these helper scripts (e.g. you're developing Chromium OS), then you will need to manually update depot_tools yourself from time to time with a simple: git pull

Caveat

Chromium engineers expect the auto-updating behavior of depot_tools, checkout or presubmit breakage may ensue.