You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Go to file
Ravi Mistry 0f13273f1f Add support for Gerrit topics in gclient syncs
If the new flag "--download-topics" is specified with a "--patch-ref" then:
* Finds the topic of the Gerrit change.
* Finds all open changes in the same repo as the Gerrit change.
* Cherrypicks all changes locally.

This functionality can be used by developers and bots to apply all changes with the same topic in the checkout to be tested at the same time (similar to how Android's TreeHugger handles topics).


Tested by:

* Running the new unit test with `python gclient_scm_test.py GerritChangesTest.testDownloadsTopics` from the `tests/` directory.

* Running an end-to-end test with `DEPOT_TOOLS_UPDATE=0 gclient sync --patch-ref "skia@d831da5b8ac2d257c5b0cf2ec6645a148f05e662:refs/changes/17/505217/2" --download-topics` in a skia checkout.


Bug: chromium:1298922
Change-Id: Ieace5e27fbc9c5d0ea90a037bf80a95062c1b164
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3444003
Reviewed-by: Josip Sokcevic <sokcevic@google.com>
Commit-Queue: Ravi Mistry <rmistry@chromium.org>
3 years ago
bootstrap Bump git version for Windows fix. 4 years ago
fetch_configs Add fetch hook for ANGLE. 4 years ago
git-templates
infra Roll recipe dependencies (trivial). 4 years ago
man [docs] Fix alias settings 4 years ago
python-bin
python2-bin
recipes Update diff_deps receipe to py3 3 years ago
testing_support Use pylint 2.7 for depot_tools 4 years ago
tests Add support for Gerrit topics in gclient syncs 3 years ago
third_party Remove retry_decorator from third_party 4 years ago
win_toolchain Replace hard-coded Windows SDK path 4 years ago
zsh-goodies
.cipd_impl.ps1
.gitattributes
.gitignore
.style.yapf
.vpython Add explicit vpython verification tags which include mac-arm64. 4 years ago
.vpython3 Reland "Use py3 in gitiles recipe module" 4 years ago
CROS_OWNERS
DIR_METADATA
GOMA_OWNERS Update GOMA_OWNERS 4 years ago
LICENSE
LUCI_OWNERS Remove tandrii@ from OWNERS under depot_tools 4 years ago
OWNERS Add iannucci to depot_tools owners 4 years ago
PRESUBMIT.py Use pylint 2.7 for depot_tools 4 years ago
README.gclient.md
README.git-cl.md
README.md
WATCHLISTS Update Source team WATCHLIST entry. 4 years ago
auth.py
autoninja
autoninja.bat Replace all rem comments with :: comments in batch files 4 years ago
autoninja.py Use pylint 2.7 for depot_tools 4 years ago
bb
bb.bat
bootstrap_python3
breakpad.py
cbuildbot
cipd
cipd.bat
cipd_bin_setup.bat
cipd_bin_setup.sh
cipd_client_version [cipd] Update cipd client to v2.6.2. 4 years ago
cipd_client_version.digests [cipd] Update cipd client to v2.6.2. 4 years ago
cipd_manifest.txt New vpython in depot_tools 4 years ago
cipd_manifest.versions New vpython in depot_tools 4 years ago
cit Use py3 for remaining tools in depot_tools path 4 years ago
cit.bat Use py3 for remaining tools in depot_tools path 4 years ago
cit.py Use pylint 2.7 for depot_tools 4 years ago
clang-format Use py3 for remaining tools in depot_tools path 4 years ago
clang-format.bat Use py3 for remaining tools in depot_tools path 4 years ago
clang_format.py Use py3 for remaining tools in depot_tools path 4 years ago
clang_format_merge_driver Use py3 for remaining tools in depot_tools path 4 years ago
clang_format_merge_driver.bat Use py3 for remaining tools in depot_tools path 4 years ago
clang_format_merge_driver.py Use pylint 2.7 for depot_tools 4 years ago
codereview.settings
compile_single_file Use py3 for remaining tools in depot_tools path 4 years ago
compile_single_file.bat Use py3 for remaining tools in depot_tools path 4 years ago
compile_single_file.py Use pylint 2.7 for depot_tools 4 years ago
cpplint.bat
cpplint.py Use pylint 2.7 for depot_tools 4 years ago
cpplint_chromium.py
cros
cros_sdk
crosjobs
detect_host_arch.py
dirmd
dirmd.bat
download_from_google_storage
download_from_google_storage.bat
download_from_google_storage.py Use pylint 2.7 for depot_tools 4 years ago
ensure_bootstrap ensure_bootstrap: bootstrap tools in parallel 4 years ago
fetch
fetch.bat
fetch.py Add fetch hook for ANGLE. 4 years ago
fix_encoding.py
gclient
gclient-new-workdir.py
gclient.bat
gclient.py Add support for Gerrit topics in gclient syncs 3 years ago
gclient_completion.sh
gclient_eval.py Use pylint 2.7 for depot_tools 4 years ago
gclient_paths.py
gclient_scm.py Add support for Gerrit topics in gclient syncs 3 years ago
gclient_utils.py Use pylint 2.7 for depot_tools 4 years ago
gerrit_client.py Allow to pass CC list when create a gerrit change 4 years ago
gerrit_util.py Use pylint 2.7 for depot_tools 4 years ago
git-cache
git-cl
git-crrev-parse Fix git-crrev-parse to work with both master & main branches 4 years ago
git-drover
git-find-releases
git-footers
git-freeze
git-gs Add rs files to git gs. 4 years ago
git-hyper-blame
git-map
git-map-branches
git-mark-merge-base
git-migrate-default-branch
git-nav-downstream
git-nav-upstream
git-new-branch
git-number
git-rebase-update
git-rename-branch
git-reparent-branch
git-retry
git-runhooks Revert "Remove unused functionality in bot_update.py" 4 years ago
git-squash-branch
git-thaw
git-upstream-diff
git_cache.py Use pylint 2.7 for depot_tools 4 years ago
git_cl.py Support py3 in post upload presubmit hooks 4 years ago
git_cl_completion.sh
git_common.py Use pylint 2.7 for depot_tools 4 years ago
git_dates.py
git_drover.py
git_find_releases.py
git_footers.py Use pylint 2.7 for depot_tools 4 years ago
git_freezer.py
git_hyper_blame.py
git_map.py Use pylint 2.7 for depot_tools 4 years ago
git_map_branches.py
git_mark_merge_base.py
git_migrate_default_branch.py Update git fetch refspecs on git migrate 4 years ago
git_nav_downstream.py Use pylint 2.7 for depot_tools 4 years ago
git_new_branch.py
git_number.py Use pylint 2.7 for depot_tools 4 years ago
git_rebase_update.py Revert "Error out of rebase-update if there are uncommitted changes" 4 years ago
git_rename_branch.py
git_reparent_branch.py
git_retry.py
git_squash_branch.py
git_upstream_diff.py
gn gn: Call gn.bat in msysgit on Windows. 4 years ago
gn.bat Revert "Call python3.bat explicitly from gn.bat on Windows." 4 years ago
gn.py Use pylint 2.7 for depot_tools 4 years ago
goma_auth
goma_auth.bat
goma_ctl
goma_ctl.bat
gsutil.py gsutil: use shorter path for temp dir 4 years ago
gsutil.py.bat
gsutil.vpython Use fixed cryptography wheel for gsutil. 4 years ago
led
led.bat
lockfile.py
luci-auth
luci-auth.bat
lucicfg
lucicfg.bat
mac_toolchain
metrics.README.md
metrics.py
metrics_utils.py Use pylint 2.7 for depot_tools 4 years ago
my_activity.py Use pylint 2.7 for depot_tools 4 years ago
ninja
ninja-linux32
ninja-linux64
ninja-mac
ninja.exe
ninjalog.README.md ninjalog_uploader: use goma_auth to detect googler 4 years ago
ninjalog_uploader.py ninjalog_uploader: do not redirect stderr 4 years ago
ninjalog_uploader_wrapper.py ninjalog_uploader: fix command for Windows 4 years ago
owners.py
owners_client.py
owners_finder.py Use pylint 2.7 for depot_tools 4 years ago
pinpoint
pinpoint.bat
post_build_ninja_summary.py
presubmit_canned_checks.py Use pylint 2.7 for depot_tools 4 years ago
presubmit_canned_checks_test.py Warn user in case they use commit messages with "Bug=" instead of "Bug:" 4 years ago
presubmit_canned_checks_test_mocks.py Use pylint 2.7 for depot_tools 4 years ago
presubmit_support.py Support py3 in post upload presubmit hooks 4 years ago
profile.xml
prpc
prpc.bat
pylint
pylint-1.5 Fix hangs when running pylint with py3 4 years ago
pylint-1.5.bat
pylint-2.6 Fix hangs when running pylint with py3 4 years ago
pylint-2.6.bat
pylint-2.7 Fix hangs when running pylint with py3 4 years ago
pylint-2.7.bat Add pylint-2.7 4 years ago
pylint.bat
pylint_main.py
pylintrc
python_runner.sh
rdb
rdb.bat
rdb_wrapper.py
repo
repo_launcher repo: update launcher to v2.21 4 years ago
roll-dep
roll-dep.bat
roll_dep.py Drop support for master branch in roll_dep 4 years ago
rustfmt.py [rust] [depot_tools] Minimal `rustfmt` support for `git cl format`. 4 years ago
scm.py Use pylint 2.7 for depot_tools 4 years ago
setup_color.py
split_cl.py
subcommand.py Use pylint 2.7 for depot_tools 4 years ago
subprocess2.py
update_depot_tools Always fetch main in update_depot_tools 4 years ago
update_depot_tools.bat Replace all rem comments with :: comments in batch files 4 years ago
update_depot_tools_toggle.py
upload_metrics.py
upload_to_google_storage.py Use pylint 2.7 for depot_tools 4 years ago
vpython
vpython.bat
vpython3
vpython3.bat
watchlists.py
weekly
whitespace.txt
win32imports.py
wtf
yapf Revert "Update vpython spec for yapf" 4 years ago
yapf.bat

README.md

depot_tools

Tools for working with Chromium development. It requires python 2.7 or 3.8 for python 3 support.

Tools

The most important tools are:

  • fetch: A gclient wrapper to checkout a project. Use fetch --help for more details.
  • gclient: A meta-checkout tool. Think repo or git submodules, except that it support OS-specific rules, e.g. do not checkout Windows only dependencies when checking out for Android. Use gclient help for more details and README.gclient.md.
  • git cl: A code review tool to interact with Rietveld or Gerrit. Use git cl help for more details and README.git-cl.md.
  • roll-dep: A gclient dependency management tool to submit a dep roll, updating a dependency to a newer revision.

There are a lot of git utilities included.

Updating

depot_tools updates itself automatically when running gclient tool. To disable auto update, set the environment variable DEPOT_TOOLS_UPDATE=0.

To update package manually, run update_depot_tools.bat on Windows, or ./update_depot_tools on Linux or Mac.

On Windows only, running gclient will install git and python.

Contributing

To contribute change for review:

git new-branch <somename>
# Hack
git add .
git commit -a -m "Fixes goat teleporting"
# find reviewers
git cl owners
git log -- <yourfiles>

# Request a review.
git cl upload -r reviewer1@chromium.org,reviewer2@chromium.org --send-mail

# Edit change description if needed.
git cl desc

# If change is approved, flag it to be committed.
git cl set-commit

# If change needs more work.
git rebase-update
...
git cl upload -t "Fixes goat teleporter destination to be Australia"

See also open bugs, open reviews, forum or report problems.

cpplint.py

Until 2018, our cpplint.py was a copy of the upstream version at https://github.com/google/styleguide/tree/gh-pages/cpplint. Unfortunately, that repository is not maintained any more. If you want to update cpplint.py in depot_tools, just upload a patch to do so. We will figure out a long-term strategy via issue https://crbug.com/916550.

Note that the cpplint.py here is also used by the Tricium analyzer, so if the cpplint.py here changes, we should also update the copy used there.