Add experimental --google-java-format flag to "git cl format"

Flag will be used to test out the formatter, and eventually be removed
and made default (or removed and abandon google-java-format)

Bug: 1462204
Change-Id: I3dc9a77fcabc7513674f5db5eab6979a97d2b315
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4864924
Reviewed-by: Josip Sokcevic <sokcevic@chromium.org>
Commit-Queue: Andrew Grieve <agrieve@chromium.org>
1 file changed
tree: b9c6a2028e5b1a0d8ff7fab13a407839d206eba5
  1. bootstrap/
  2. fetch_configs/
  3. git-templates/
  4. infra/
  5. man/
  6. metadata/
  7. python-bin/
  8. python2-bin/
  9. recipes/
  10. testing_support/
  11. tests/
  12. third_party/
  13. win_toolchain/
  14. zsh-goodies/
  15. .cipd_impl.ps1
  16. .gitattributes
  17. .gitignore
  18. .isort.cfg
  19. .style.yapf
  20. .vpython
  21. .vpython3
  22. auth.py
  23. autoninja
  24. autoninja.bat
  25. autoninja.py
  26. autosiso
  27. autosiso.bat
  28. autosiso.py
  29. bazel.py
  30. bb
  31. bb.bat
  32. black
  33. bootstrap_python3
  34. breakpad.py
  35. BUILD_OWNERS
  36. cipd
  37. cipd.bat
  38. cipd_bin_setup.bat
  39. cipd_bin_setup.sh
  40. cipd_client_version
  41. cipd_client_version.digests
  42. cipd_manifest.txt
  43. cipd_manifest.versions
  44. cipd_manifest_cros_python2.txt
  45. cipd_manifest_cros_python2.versions
  46. clang-format
  47. clang-format.bat
  48. clang_format.py
  49. codereview.settings
  50. compile_single_file
  51. compile_single_file.bat
  52. compile_single_file.py
  53. cpplint.bat
  54. cpplint.py
  55. cpplint_chromium.py
  56. cros
  57. CROS_OWNERS
  58. cros_python2.vpython
  59. crosjobs
  60. detect_host_arch.py
  61. DIR_METADATA
  62. dirmd
  63. dirmd.bat
  64. download_from_google_storage
  65. download_from_google_storage.bat
  66. download_from_google_storage.py
  67. ensure_bootstrap
  68. fetch
  69. fetch.bat
  70. fetch.py
  71. fix_encoding.py
  72. gclient
  73. gclient-new-workdir.py
  74. gclient.bat
  75. gclient.py
  76. gclient_completion.sh
  77. gclient_eval.py
  78. gclient_paths.py
  79. gclient_scm.py
  80. gclient_utils.py
  81. gerrit_client.py
  82. gerrit_util.py
  83. git-cache
  84. git-cl
  85. git-crrev-parse
  86. git-drover
  87. git-find-releases
  88. git-footers
  89. git-freeze
  90. git-gs
  91. git-hyper-blame
  92. git-map
  93. git-map-branches
  94. git-mark-merge-base
  95. git-migrate-default-branch
  96. git-nav-downstream
  97. git-nav-upstream
  98. git-new-branch
  99. git-number
  100. git-rebase-update
  101. git-rename-branch
  102. git-reparent-branch
  103. git-retry
  104. git-runhooks
  105. git-squash-branch
  106. git-thaw
  107. git-upstream-diff
  108. git_cache.py
  109. git_cl.py
  110. git_cl_completion.sh
  111. git_common.py
  112. git_completion.sh
  113. git_dates.py
  114. git_drover.py
  115. git_find_releases.py
  116. git_footers.py
  117. git_freezer.py
  118. git_hyper_blame.py
  119. git_map.py
  120. git_map_branches.py
  121. git_mark_merge_base.py
  122. git_migrate_default_branch.py
  123. git_nav_downstream.py
  124. git_new_branch.py
  125. git_number.py
  126. git_rebase_update.py
  127. git_rename_branch.py
  128. git_reparent_branch.py
  129. git_retry.py
  130. git_squash_branch.py
  131. git_upstream_diff.py
  132. gn
  133. gn.bat
  134. gn.py
  135. goma_auth
  136. goma_auth.bat
  137. goma_ctl
  138. goma_ctl.bat
  139. gsutil.py
  140. gsutil.py.bat
  141. gsutil.vpython3
  142. infra_to_superproject
  143. infra_to_superproject.bat
  144. infra_to_superproject.py
  145. isort
  146. led
  147. led.bat
  148. LICENSE
  149. lockfile.py
  150. luci-auth
  151. luci-auth.bat
  152. LUCI_OWNERS
  153. lucicfg
  154. lucicfg.bat
  155. mac_toolchain
  156. metrics.py
  157. metrics.README.md
  158. metrics_utils.py
  159. my_activity.py
  160. ninja
  161. ninja.bat
  162. ninja.py
  163. ninja_reclient.py
  164. ninjalog.README.md
  165. ninjalog_uploader.py
  166. ninjalog_uploader_wrapper.py
  167. OWNERS
  168. owners_client.py
  169. owners_finder.py
  170. pinpoint
  171. pinpoint.bat
  172. post_build_ninja_summary.py
  173. PRESUBMIT.py
  174. presubmit_canned_checks.py
  175. presubmit_support.py
  176. profile.xml
  177. prpc
  178. prpc.bat
  179. pylint-2.6
  180. pylint-2.6.bat
  181. pylint-2.7
  182. pylint-2.7.bat
  183. pylint_main.py
  184. pylintrc
  185. python_runner.sh
  186. rdb
  187. rdb.bat
  188. rdb_wrapper.py
  189. README.gclient.md
  190. README.git-cl.md
  191. README.md
  192. reclient_helper.py
  193. reclient_metrics
  194. reclient_metrics.bat
  195. reclient_metrics.py
  196. reclient_metrics.README.md
  197. RECLIENT_OWNERS
  198. reclientreport
  199. reclientreport.bat
  200. reclientreport.py
  201. repo
  202. repo_launcher
  203. roll-dep
  204. roll-dep.bat
  205. roll_dep.py
  206. rustfmt.py
  207. scm.py
  208. setup_color.py
  209. siso
  210. siso.bat
  211. siso.py
  212. split_cl.py
  213. subcommand.py
  214. subprocess2.py
  215. swift-format
  216. swift_format.py
  217. update_depot_tools
  218. update_depot_tools.bat
  219. update_depot_tools_toggle.py
  220. upload_metrics.py
  221. upload_to_google_storage.py
  222. utils.py
  223. vpython
  224. vpython.bat
  225. vpython3
  226. vpython3.bat
  227. WATCHLISTS
  228. watchlists.py
  229. weekly
  230. whitespace.txt
  231. win32imports.py
  232. wtf
  233. yapf
  234. yapf.bat
README.md

depot_tools

Tools for working with Chromium development. It requires python 3.8.

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 or run ./update_depot_tools_toggle.py --disable.

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.