Prevent split_cl.py from uploading multiple CLs for same reviewers

This CL prevents split_cl.py from uploading multiple CLs for the same
reviewer set.

BUG=1468350

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