git cl: Rework Changelist class for Rietveld/Gerrit use.

This adds pluggable codereview-specific implementations into
Changelist class. The specific implementation is chosen at
Changelist automatically, with Rietveld being default for
backwards compatibility.

Gerrit implementation for Gerrit is incomplete, and will be
added in later CLs. However, it is sufficient to ensure
current functionality of this tool is not diminished.

Sadly, the base class isn't completely free from Rietveld
assumptions because of presubmit_support. Apparently, PRESUBMIT 
scripts can make use of Rietveld instance for RPCs directly.
This use doesn't make sense for Gerrit, which substitutes
rietveld instance with a dummy object, which raises exception
on any attribute access with a diagnostic message.

This also includes refactoring of some related code which
(ab)used ChangeList. Overall, this CL adds a few extra call to
git config in order to determine which codereview to use, but
but it shouldn't have any performance impact.


BUG=579160

Review URL: https://codereview.chromium.org/1805193002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@299462 0039d316-1c4b-4281-b951-d872f2087c98
2 files changed
tree: 23f21f57e506c0b945e54659ab01f4d2e7be0ba2
  1. bootstrap/
  2. fetch_configs/
  3. git-templates/
  4. git_utils/
  5. infra/
  6. luci_hacks/
  7. man/
  8. recipe_modules/
  9. support/
  10. testing_support/
  11. tests/
  12. third_party/
  13. win_toolchain/
  14. zsh-goodies/
  15. .gitignore
  16. .style.yapf
  17. annotated_gclient.py
  18. apply_issue
  19. apply_issue.bat
  20. apply_issue.py
  21. auth.py
  22. breakpad.py
  23. buildbucket.py
  24. checkout.py
  25. chrome-update-create-task.bat
  26. chrome-update.bat
  27. chrome-update.py
  28. cit
  29. cit.bat
  30. cit.py
  31. clang-format
  32. clang-format.bat
  33. clang_format.py
  34. codereview.settings
  35. commit_queue
  36. commit_queue.bat
  37. commit_queue.py
  38. cpplint.bat
  39. cpplint.py
  40. cpplint_chromium.py
  41. create-chromium-git-src
  42. create-ntfs-junction.c
  43. create-ntfs-junction.exe
  44. dart_format.py
  45. depot-tools-auth
  46. depot-tools-auth.bat
  47. depot-tools-auth.py
  48. download_from_google_storage
  49. download_from_google_storage.bat
  50. download_from_google_storage.py
  51. drover
  52. drover.bat
  53. drover.py
  54. fetch
  55. fetch.bat
  56. fetch.py
  57. fix_encoding.py
  58. gcl
  59. gcl.bat
  60. gcl.py
  61. gclient
  62. gclient-new-workdir.py
  63. gclient.bat
  64. gclient.py
  65. gclient_completion.sh
  66. gclient_scm.py
  67. gclient_utils.py
  68. gerrit_util.py
  69. git-auto-svn
  70. git-bash
  71. git-cache
  72. git-cherry-pick-upload
  73. git-cl
  74. git-crrev-parse
  75. git-crsync
  76. git-drover
  77. git-find-releases
  78. git-footers
  79. git-freeze
  80. git-gs
  81. git-hyper-blame
  82. git-lkgr
  83. git-map
  84. git-map-branches
  85. git-mark-merge-base
  86. git-nav-downstream
  87. git-nav-upstream
  88. git-new-branch
  89. git-number
  90. git-rebase-update
  91. git-rename-branch
  92. git-reparent-branch
  93. git-retry
  94. git-runhooks
  95. git-squash-branch
  96. git-thaw
  97. git-try
  98. git-upstream-diff
  99. git_auto_svn.py
  100. git_cache.py
  101. git_cherry_pick_upload.py
  102. git_cl.py
  103. git_common.py
  104. git_dates.py
  105. git_drover.py
  106. git_find_releases.py
  107. git_footers.py
  108. git_freezer.py
  109. git_hyper_blame.py
  110. git_map.py
  111. git_map_branches.py
  112. git_mark_merge_base.py
  113. git_nav_downstream.py
  114. git_new_branch.py
  115. git_number.py
  116. git_rebase_update.py
  117. git_rename_branch.py
  118. git_reparent_branch.py
  119. git_retry.py
  120. git_squash_branch.py
  121. git_try.py
  122. git_upstream_diff.py
  123. gn
  124. gn.bat
  125. gn.py
  126. gsutil.py
  127. hammer
  128. hammer.bat
  129. LICENSE
  130. my_activity.py
  131. my_reviews.py
  132. ninja
  133. ninja-linux32
  134. ninja-linux64
  135. ninja-mac
  136. ninja.exe
  137. OWNERS
  138. owners.py
  139. owners_finder.py
  140. patch.py
  141. PRESUBMIT.py
  142. presubmit_canned_checks.py
  143. presubmit_support.py
  144. profile.xml
  145. pylint
  146. pylint.py
  147. pylintrc
  148. python_runner.sh
  149. README
  150. README.codereview
  151. README.gclient
  152. README.git-cl
  153. README.testing
  154. recipes.py
  155. repo
  156. rietveld.py
  157. roll-dep
  158. roll-dep-svn
  159. roll-dep-svn.bat
  160. roll-dep.bat
  161. roll_dep.py
  162. roll_dep_svn.py
  163. scm.py
  164. subcommand.py
  165. subprocess2.py
  166. trychange.py
  167. update_depot_tools
  168. update_depot_tools.bat
  169. upload_to_google_storage.py
  170. WATCHLISTS
  171. watchlists.py
  172. weekly
  173. wtf