RBTools 6.0__tar.gz → 7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (505) hide show
  1. {rbtools-6.0 → rbtools-7.0}/AUTHORS +1 -0
  2. {rbtools-6.0 → rbtools-7.0}/PKG-INFO +2 -4
  3. {rbtools-6.0 → rbtools-7.0}/RBTools.egg-info/PKG-INFO +2 -4
  4. {rbtools-6.0 → rbtools-7.0}/RBTools.egg-info/SOURCES.txt +11 -2
  5. {rbtools-6.0 → rbtools-7.0}/RBTools.egg-info/requires.txt +1 -3
  6. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/build-installer.bat +218 -26
  7. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/bootstrapper.wixproj +6 -4
  8. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/common.props +7 -2
  9. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/rbtools.wixproj +6 -6
  10. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/api/coderef/index.rst +0 -1
  11. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/post.rst +30 -9
  12. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/configuration/users.rst +81 -11
  13. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/6.0.rst +5 -4
  14. rbtools-7.0/docs/releasenotes/7.0.rst +313 -0
  15. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/conf.py +1 -0
  16. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/index.rst +9 -0
  17. {rbtools-6.0 → rbtools-7.0}/pyproject.toml +1 -3
  18. {rbtools-6.0 → rbtools-7.0}/rbtools/__init__.py +3 -3
  19. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/root.py +9 -5
  20. {rbtools-6.0 → rbtools-7.0}/rbtools/api/tests/test_resource.py +16 -0
  21. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/__init__.py +7 -38
  22. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/base/scmclient.py +36 -213
  23. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/clearcase.py +59 -22
  24. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/jujutsu.py +87 -20
  25. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/mercurial.py +18 -13
  26. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_base_scmclient.py +1 -42
  27. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_clearcase.py +150 -27
  28. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_jujutsu.py +184 -3
  29. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_mercurial.py +0 -39
  30. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_svn.py +9 -11
  31. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_tfs.py +7 -3
  32. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/alias.py +25 -16
  33. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/attach.py +9 -7
  34. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/base/commands.py +287 -118
  35. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/base/output.py +39 -3
  36. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/clearcache.py +1 -1
  37. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/close.py +37 -19
  38. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/diff.py +8 -5
  39. rbtools-7.0/rbtools/commands/info.py +243 -0
  40. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/install.py +119 -57
  41. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/land.py +85 -46
  42. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/list_repo_types.py +2 -2
  43. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/login.py +12 -13
  44. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/logout.py +15 -10
  45. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/patch.py +31 -41
  46. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/post.py +314 -209
  47. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/publish.py +32 -9
  48. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/review.py +65 -44
  49. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/stamp.py +39 -14
  50. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/status.py +37 -21
  51. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/status_update.py +81 -37
  52. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/tests/test_alias.py +1 -1
  53. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/tests/test_command_initialization.py +111 -0
  54. rbtools-7.0/rbtools/commands/tests/test_info.py +345 -0
  55. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/tests/test_login.py +54 -57
  56. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/tests/test_logout.py +18 -24
  57. rbtools-7.0/rbtools/commands/tests/test_patch.py +371 -0
  58. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/tests/test_post.py +110 -0
  59. rbtools-7.0/rbtools/commands/tests/test_review.py +383 -0
  60. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/tests/test_setup_completion.py +11 -5
  61. {rbtools-6.0 → rbtools-7.0}/rbtools/config/config.py +36 -4
  62. {rbtools-6.0 → rbtools-7.0}/rbtools/deprecation.py +9 -9
  63. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/errors.py +2 -9
  64. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/patcher.py +75 -29
  65. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/patches.py +34 -46
  66. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tests/test_apple_diff_tool.py +2 -2
  67. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tests/test_apply_patch_error.py +0 -16
  68. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tests/test_patch.py +5 -33
  69. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tests/test_patcher.py +52 -0
  70. {rbtools-6.0 → rbtools-7.0}/rbtools/testing/api/payloads.py +1 -1
  71. {rbtools-6.0 → rbtools-7.0}/rbtools/testing/commands.py +9 -3
  72. rbtools-7.0/rbtools/ui/__init__.py +5 -0
  73. rbtools-7.0/rbtools/ui/console.py +986 -0
  74. rbtools-7.0/rbtools/ui/tests/__init__.py +5 -0
  75. rbtools-7.0/rbtools/ui/tests/test_console.py +350 -0
  76. rbtools-7.0/rbtools/ui/theme.py +110 -0
  77. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/commands.py +30 -30
  78. rbtools-7.0/rbtools/utils/commit_messages.py +263 -0
  79. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/mimetypes.py +10 -4
  80. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/process.py +6 -2
  81. rbtools-7.0/rbtools/utils/tests/test_commit_messages.py +206 -0
  82. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/users.py +33 -4
  83. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/web_login.py +83 -26
  84. rbtools-6.0/rbtools/clients/base/patch.py +0 -30
  85. rbtools-6.0/rbtools/clients/tests/test_legacy_patcher.py +0 -147
  86. rbtools-6.0/rbtools/commands/info.py +0 -93
  87. {rbtools-6.0 → rbtools-7.0}/COPYING +0 -0
  88. {rbtools-6.0 → rbtools-7.0}/INSTALL +0 -0
  89. {rbtools-6.0 → rbtools-7.0}/MANIFEST.in +0 -0
  90. {rbtools-6.0 → rbtools-7.0}/NEWS +0 -0
  91. {rbtools-6.0 → rbtools-7.0}/RBTools.egg-info/dependency_links.txt +0 -0
  92. {rbtools-6.0 → rbtools-7.0}/RBTools.egg-info/entry_points.txt +0 -0
  93. {rbtools-6.0 → rbtools-7.0}/RBTools.egg-info/top_level.txt +0 -0
  94. {rbtools-6.0 → rbtools-7.0}/README.md +0 -0
  95. {rbtools-6.0 → rbtools-7.0}/contrib/P4V/P4V-Mac-Linux-Tools-Import.xml +0 -0
  96. {rbtools-6.0 → rbtools-7.0}/contrib/P4V/P4V-Windows-RBTools-Install.xml +0 -0
  97. {rbtools-6.0 → rbtools-7.0}/contrib/P4V/README.md +0 -0
  98. {rbtools-6.0 → rbtools-7.0}/contrib/installers/macosx/build-mpkg.sh +0 -0
  99. {rbtools-6.0 → rbtools-7.0}/contrib/installers/macosx/distribution.xml +0 -0
  100. {rbtools-6.0 → rbtools-7.0}/contrib/installers/macosx/resources/background.tiff +0 -0
  101. {rbtools-6.0 → rbtools-7.0}/contrib/installers/macosx/resources/background@2x.tiff +0 -0
  102. {rbtools-6.0 → rbtools-7.0}/contrib/installers/macosx/resources/conclusion.html +0 -0
  103. {rbtools-6.0 → rbtools-7.0}/contrib/installers/macosx/resources/welcome.html +0 -0
  104. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/scripts/get-version.py +0 -0
  105. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/Product_en-us.wxl +0 -0
  106. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/bundle.wxs +0 -0
  107. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/defines.wxi +0 -0
  108. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/files/favicon.ico +0 -0
  109. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/files/logo.png +0 -0
  110. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/files/rbt +0 -0
  111. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/files/rbt.cmd +0 -0
  112. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/product.wxs +0 -0
  113. {rbtools-6.0 → rbtools-7.0}/contrib/installers/windows/wix/rbtools.sln +0 -0
  114. {rbtools-6.0 → rbtools-7.0}/contrib/tools/git-hook-check-approval +0 -0
  115. {rbtools-6.0 → rbtools-7.0}/contrib/tools/git-hook-set-submitted +0 -0
  116. {rbtools-6.0 → rbtools-7.0}/contrib/tools/p4-trigger-script +0 -0
  117. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/Makefile +0 -0
  118. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/_ext/__init__.py +0 -0
  119. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/_ext/rbt_commands.py +0 -0
  120. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/api/index.rst +0 -0
  121. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/api/overview.rst +0 -0
  122. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/api/tutorial.rst +0 -0
  123. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/authentication.rst +0 -0
  124. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/conf.py +0 -0
  125. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/glossary.rst +0 -0
  126. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/index.rst +0 -0
  127. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/installation.rst +0 -0
  128. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/alias.rst +0 -0
  129. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/api-get.rst +0 -0
  130. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/attach.rst +0 -0
  131. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/clear-cache.rst +0 -0
  132. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/close.rst +0 -0
  133. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/diff.rst +0 -0
  134. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/index.rst +0 -0
  135. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/info.rst +0 -0
  136. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/install.rst +0 -0
  137. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/land.rst +0 -0
  138. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/list-repo-types.rst +0 -0
  139. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/login.rst +0 -0
  140. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/logout.rst +0 -0
  141. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/patch.rst +0 -0
  142. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/publish.rst +0 -0
  143. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/review.rst +0 -0
  144. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/setup-completion.rst +0 -0
  145. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/setup-repo.rst +0 -0
  146. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/stamp.rst +0 -0
  147. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/status-update.rst +0 -0
  148. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/commands/status.rst +0 -0
  149. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/configuration/aliases.rst +0 -0
  150. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/configuration/index.rst +0 -0
  151. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/configuration/repositories.rst +0 -0
  152. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/configuration/tfs.rst +0 -0
  153. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/rbt/index.rst +0 -0
  154. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/redirects.json +0 -0
  155. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/workflows/clearcase.rst +0 -0
  156. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/workflows/git.rst +0 -0
  157. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/workflows/index.rst +0 -0
  158. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/workflows/jujutsu.rst +0 -0
  159. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/workflows/perforce.rst +0 -0
  160. {rbtools-6.0 → rbtools-7.0}/docs/rbtools/workflows/sos.rst +0 -0
  161. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.2-beta-1.rst +0 -0
  162. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.2-beta-2.rst +0 -0
  163. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.2-rc-1.rst +0 -0
  164. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.2.rst +0 -0
  165. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.3.1.rst +0 -0
  166. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.3.2.rst +0 -0
  167. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.3.3.rst +0 -0
  168. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.3.4.rst +0 -0
  169. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.3.rst +0 -0
  170. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.4.1.rst +0 -0
  171. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.4.2.rst +0 -0
  172. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.4.3.rst +0 -0
  173. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.4.rst +0 -0
  174. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.5.1.rst +0 -0
  175. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.5.2.rst +0 -0
  176. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.5.3.rst +0 -0
  177. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.5.4.rst +0 -0
  178. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.5.5.rst +0 -0
  179. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.5.6.rst +0 -0
  180. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.5.7.rst +0 -0
  181. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.5.rst +0 -0
  182. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.6.1.rst +0 -0
  183. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.6.2.rst +0 -0
  184. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.6.3.rst +0 -0
  185. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.6.rst +0 -0
  186. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.1.rst +0 -0
  187. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.10.rst +0 -0
  188. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.11.rst +0 -0
  189. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.2.rst +0 -0
  190. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.3.rst +0 -0
  191. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.4.rst +0 -0
  192. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.5.rst +0 -0
  193. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.6.rst +0 -0
  194. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.7.rst +0 -0
  195. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.8.rst +0 -0
  196. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.9.rst +0 -0
  197. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/0.7.rst +0 -0
  198. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/1.0.1.rst +0 -0
  199. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/1.0.2.rst +0 -0
  200. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/1.0.3.rst +0 -0
  201. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/1.0.rst +0 -0
  202. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/2.0.1.rst +0 -0
  203. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/2.0.rst +0 -0
  204. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/3.0.rst +0 -0
  205. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/3.1.1.rst +0 -0
  206. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/3.1.2.rst +0 -0
  207. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/3.1.rst +0 -0
  208. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/4.0.rst +0 -0
  209. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/4.1.rst +0 -0
  210. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/5.0.rst +0 -0
  211. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/5.1.1.rst +0 -0
  212. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/5.1.rst +0 -0
  213. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/5.2.1.rst +0 -0
  214. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/5.2.rst +0 -0
  215. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/5.3.rst +0 -0
  216. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/Makefile +0 -0
  217. {rbtools-6.0 → rbtools-7.0}/docs/releasenotes/_ext/extralinks.py +0 -0
  218. {rbtools-6.0 → rbtools-7.0}/rbtools/api/__init__.py +0 -0
  219. {rbtools-6.0 → rbtools-7.0}/rbtools/api/cache.py +0 -0
  220. {rbtools-6.0 → rbtools-7.0}/rbtools/api/capabilities.py +0 -0
  221. {rbtools-6.0 → rbtools-7.0}/rbtools/api/client.py +0 -0
  222. {rbtools-6.0 → rbtools-7.0}/rbtools/api/decode.py +0 -0
  223. {rbtools-6.0 → rbtools-7.0}/rbtools/api/decorators.py +0 -0
  224. {rbtools-6.0 → rbtools-7.0}/rbtools/api/errors.py +0 -0
  225. {rbtools-6.0 → rbtools-7.0}/rbtools/api/factory.py +0 -0
  226. {rbtools-6.0 → rbtools-7.0}/rbtools/api/request.py +0 -0
  227. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/__init__.py +0 -0
  228. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/api_token.py +0 -0
  229. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/archived_review_request.py +0 -0
  230. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/base.py +0 -0
  231. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/base_archived_object.py +0 -0
  232. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/base_comment.py +0 -0
  233. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/base_diff_commit.py +0 -0
  234. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/base_review.py +0 -0
  235. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/base_review_group.py +0 -0
  236. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/base_review_request.py +0 -0
  237. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/base_user.py +0 -0
  238. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/change.py +0 -0
  239. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/default_reviewer.py +0 -0
  240. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/diff.py +0 -0
  241. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/diff_comment.py +0 -0
  242. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/diff_commit.py +0 -0
  243. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/diff_context.py +0 -0
  244. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/diff_file_attachment.py +0 -0
  245. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/draft_diff_commit.py +0 -0
  246. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/draft_file_attachment.py +0 -0
  247. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/draft_screenshot.py +0 -0
  248. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/extension.py +0 -0
  249. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/file_attachment.py +0 -0
  250. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/file_attachment_comment.py +0 -0
  251. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/file_diff.py +0 -0
  252. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/general_comment.py +0 -0
  253. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/hosting_service.py +0 -0
  254. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/hosting_service_account.py +0 -0
  255. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/last_update.py +0 -0
  256. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/mixins.py +0 -0
  257. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/muted_review_request.py +0 -0
  258. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/oauth_application.py +0 -0
  259. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/oauth_token.py +0 -0
  260. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/plain_text.py +0 -0
  261. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/remote_repository.py +0 -0
  262. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/repository.py +0 -0
  263. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/repository_branch.py +0 -0
  264. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/repository_commit.py +0 -0
  265. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/repository_group.py +0 -0
  266. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/repository_info.py +0 -0
  267. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/repository_user.py +0 -0
  268. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/review.py +0 -0
  269. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/review_group.py +0 -0
  270. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/review_group_user.py +0 -0
  271. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/review_reply.py +0 -0
  272. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/review_request.py +0 -0
  273. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/review_request_draft.py +0 -0
  274. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/screenshot.py +0 -0
  275. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/screenshot_comment.py +0 -0
  276. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/search.py +0 -0
  277. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/server_info.py +0 -0
  278. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/session.py +0 -0
  279. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/status_update.py +0 -0
  280. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/user.py +0 -0
  281. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/user_file_attachment.py +0 -0
  282. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/validate_diff.py +0 -0
  283. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/validate_diff_commit.py +0 -0
  284. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/validation.py +0 -0
  285. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/watched.py +0 -0
  286. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/watched_review_group.py +0 -0
  287. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/watched_review_request.py +0 -0
  288. {rbtools-6.0 → rbtools-7.0}/rbtools/api/resource/webhook.py +0 -0
  289. {rbtools-6.0 → rbtools-7.0}/rbtools/api/tests/__init__.py +0 -0
  290. {rbtools-6.0 → rbtools-7.0}/rbtools/api/tests/base.py +0 -0
  291. {rbtools-6.0 → rbtools-7.0}/rbtools/api/tests/test_auth_handlers.py +0 -0
  292. {rbtools-6.0 → rbtools-7.0}/rbtools/api/tests/test_capabilities.py +0 -0
  293. {rbtools-6.0 → rbtools-7.0}/rbtools/api/tests/test_errors.py +0 -0
  294. {rbtools-6.0 → rbtools-7.0}/rbtools/api/tests/test_factory.py +0 -0
  295. {rbtools-6.0 → rbtools-7.0}/rbtools/api/tests/test_http_request.py +0 -0
  296. {rbtools-6.0 → rbtools-7.0}/rbtools/api/transport/__init__.py +0 -0
  297. {rbtools-6.0 → rbtools-7.0}/rbtools/api/transport/sync.py +0 -0
  298. {rbtools-6.0 → rbtools-7.0}/rbtools/api/utils.py +0 -0
  299. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/base/__init__.py +0 -0
  300. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/base/registry.py +0 -0
  301. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/base/repository.py +0 -0
  302. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/bazaar.py +0 -0
  303. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/cvs.py +0 -0
  304. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/errors.py +0 -0
  305. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/git.py +0 -0
  306. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/perforce.py +0 -0
  307. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/plastic.py +0 -0
  308. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/sos.py +0 -0
  309. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/svn.py +0 -0
  310. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/__init__.py +0 -0
  311. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_bzr.py +0 -0
  312. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_cvs.py +0 -0
  313. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_git.py +0 -0
  314. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_p4.py +0 -0
  315. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_plastic.py +0 -0
  316. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_scanning.py +0 -0
  317. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_scmclient_registry.py +0 -0
  318. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/test_sos.py +0 -0
  319. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/checkoutlist +0 -0
  320. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/checkoutlist,v +0 -0
  321. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/commitinfo +0 -0
  322. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/commitinfo,v +0 -0
  323. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/config +0 -0
  324. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/config,v +0 -0
  325. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/cvswrappers +0 -0
  326. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/cvswrappers,v +0 -0
  327. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/loginfo +0 -0
  328. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/loginfo,v +0 -0
  329. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/modules +0 -0
  330. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/modules,v +0 -0
  331. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/notify +0 -0
  332. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/notify,v +0 -0
  333. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/postadmin +0 -0
  334. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/postadmin,v +0 -0
  335. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/postproxy +0 -0
  336. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/postproxy,v +0 -0
  337. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/posttag +0 -0
  338. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/posttag,v +0 -0
  339. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/postwatch +0 -0
  340. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/postwatch,v +0 -0
  341. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/preproxy +0 -0
  342. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/preproxy,v +0 -0
  343. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/rcsinfo +0 -0
  344. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/rcsinfo,v +0 -0
  345. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/taginfo +0 -0
  346. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/taginfo,v +0 -0
  347. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/val-tags +0 -0
  348. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/verifymsg +0 -0
  349. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/CVSROOT/verifymsg,v +0 -0
  350. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/test-project/file1,v +0 -0
  351. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/test-project/file2,v +0 -0
  352. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/cvs-repo/test-project/file3,v +0 -0
  353. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/HEAD +0 -0
  354. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/config +0 -0
  355. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/description +0 -0
  356. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/hooks/applypatch-msg.sample +0 -0
  357. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/hooks/commit-msg.sample +0 -0
  358. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/hooks/post-update.sample +0 -0
  359. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/hooks/pre-applypatch.sample +0 -0
  360. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/hooks/pre-commit.sample +0 -0
  361. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/hooks/pre-push.sample +0 -0
  362. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/hooks/pre-rebase.sample +0 -0
  363. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/hooks/prepare-commit-msg.sample +0 -0
  364. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/hooks/update.sample +0 -0
  365. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/info/exclude +0 -0
  366. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/objects/0e/88e512079c31f885b3ced6fab680674a69d8ac +0 -0
  367. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/objects/18/c5c09410ba62e8240c2cabe0822c55a60fc519 +0 -0
  368. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 +0 -0
  369. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/objects/5e/98e9540e1b741b5be24fcb33c40c1c8069c1fb +0 -0
  370. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/objects/63/4b3e8ff85bada6f928841a9f2c505560840b3a +0 -0
  371. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/objects/6a/76568cc86d73144323388a2669c6add94a572c +0 -0
  372. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/objects/79/66b68a2d81aaa3707c6200aac1c1c86f91431b +0 -0
  373. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/objects/9d/c1177bba796bd19564d1d84f27a8e4576a204a +0 -0
  374. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/objects/bd/5eb938439b726de969e52fa2d93d5e366811b7 +0 -0
  375. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/objects/c4/1fe7c20a7342965922f2772bea3e514975134a +0 -0
  376. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/objects/e6/a3577b3236ed08fdb3a42e8042bfc415d2ae22 +0 -0
  377. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/packed-refs +0 -0
  378. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/refs/heads/.gitignore +0 -0
  379. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/git-repo/refs/tags/.gitignore +0 -0
  380. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/hg-repo/foo.txt +0 -0
  381. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/homedir/.bazaar/bazaar.conf +0 -0
  382. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/homedir/.gitconfig +0 -0
  383. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/homedir/.gitignore +0 -0
  384. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/README.txt +0 -0
  385. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/conf/authz +0 -0
  386. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/conf/hooks-env.tmpl +0 -0
  387. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/conf/passwd +0 -0
  388. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/conf/svnserve.conf +0 -0
  389. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/current +0 -0
  390. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/format +0 -0
  391. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/fs-type +0 -0
  392. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/fsfs.conf +0 -0
  393. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/min-unpacked-rev +0 -0
  394. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/rep-cache.db-journal +0 -0
  395. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revprops/0/0 +0 -0
  396. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revprops/0/1 +0 -0
  397. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revprops/0/2 +0 -0
  398. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revprops/0/3 +0 -0
  399. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revprops/0/4 +0 -0
  400. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revprops/0/5 +0 -0
  401. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revprops/0/6 +0 -0
  402. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revprops/0/7 +0 -0
  403. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revs/0/0 +0 -0
  404. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revs/0/1 +0 -0
  405. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revs/0/2 +0 -0
  406. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revs/0/3 +0 -0
  407. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revs/0/4 +0 -0
  408. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revs/0/5 +0 -0
  409. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revs/0/6 +0 -0
  410. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/revs/0/7 +0 -0
  411. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/transactions/.gitignore +0 -0
  412. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/txn-current +0 -0
  413. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/txn-current-lock +0 -0
  414. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/txn-protorevs/.gitignore +0 -0
  415. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/uuid +0 -0
  416. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/db/write-lock +0 -0
  417. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/format +0 -0
  418. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/hooks/post-commit.tmpl +0 -0
  419. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/hooks/post-lock.tmpl +0 -0
  420. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/hooks/post-revprop-change.tmpl +0 -0
  421. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/hooks/post-unlock.tmpl +0 -0
  422. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/hooks/pre-commit.tmpl +0 -0
  423. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/hooks/pre-lock.tmpl +0 -0
  424. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/hooks/pre-revprop-change.tmpl +0 -0
  425. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/hooks/pre-unlock.tmpl +0 -0
  426. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/hooks/start-commit.tmpl +0 -0
  427. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/locks/db-logs.lock +0 -0
  428. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tests/testdata/svn-repo/locks/db.lock +0 -0
  429. {rbtools-6.0 → rbtools-7.0}/rbtools/clients/tfs.py +0 -0
  430. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/__init__.py +0 -0
  431. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/api_get.py +0 -0
  432. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/base/__init__.py +0 -0
  433. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/base/errors.py +0 -0
  434. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/base/options.py +0 -0
  435. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/conf/completions/bash +0 -0
  436. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/conf/completions/zsh +0 -0
  437. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/main.py +0 -0
  438. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/setup_completion.py +0 -0
  439. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/setup_repo.py +0 -0
  440. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/tests/__init__.py +0 -0
  441. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/tests/test_base_output.py +0 -0
  442. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/tests/test_command_auth_session.py +0 -0
  443. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/tests/test_main.py +0 -0
  444. {rbtools-6.0 → rbtools-7.0}/rbtools/commands/tests/test_setup_repo.py +0 -0
  445. {rbtools-6.0 → rbtools-7.0}/rbtools/config/__init__.py +0 -0
  446. {rbtools-6.0 → rbtools-7.0}/rbtools/config/errors.py +0 -0
  447. {rbtools-6.0 → rbtools-7.0}/rbtools/config/loader.py +0 -0
  448. {rbtools-6.0 → rbtools-7.0}/rbtools/config/tests/__init__.py +0 -0
  449. {rbtools-6.0 → rbtools-7.0}/rbtools/config/tests/test_config.py +0 -0
  450. {rbtools-6.0 → rbtools-7.0}/rbtools/config/tests/test_loader.py +0 -0
  451. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/__init__.py +0 -0
  452. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tests/__init__.py +0 -0
  453. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tests/test_diff_file_result.py +0 -0
  454. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tests/test_diff_tools_registry.py +0 -0
  455. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tests/test_gnu_diff_tool.py +0 -0
  456. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tests/test_unified_diff_writer.py +0 -0
  457. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tools/__init__.py +0 -0
  458. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tools/backends/__init__.py +0 -0
  459. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tools/backends/apple.py +0 -0
  460. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tools/backends/gnu.py +0 -0
  461. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tools/base/__init__.py +0 -0
  462. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tools/base/diff_file_result.py +0 -0
  463. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tools/base/diff_tool.py +0 -0
  464. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tools/errors.py +0 -0
  465. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/tools/registry.py +0 -0
  466. {rbtools-6.0 → rbtools-7.0}/rbtools/diffs/writers.py +0 -0
  467. {rbtools-6.0 → rbtools-7.0}/rbtools/helpers/__init__.py +0 -0
  468. {rbtools-6.0 → rbtools-7.0}/rbtools/helpers/hgext.py +0 -0
  469. {rbtools-6.0 → rbtools-7.0}/rbtools/hooks/__init__.py +0 -0
  470. {rbtools-6.0 → rbtools-7.0}/rbtools/hooks/common.py +0 -0
  471. {rbtools-6.0 → rbtools-7.0}/rbtools/hooks/git.py +0 -0
  472. {rbtools-6.0 → rbtools-7.0}/rbtools/testing/__init__.py +0 -0
  473. {rbtools-6.0 → rbtools-7.0}/rbtools/testing/api/__init__.py +0 -0
  474. {rbtools-6.0 → rbtools-7.0}/rbtools/testing/api/transport.py +0 -0
  475. {rbtools-6.0 → rbtools-7.0}/rbtools/testing/scripts/editor.py +0 -0
  476. {rbtools-6.0 → rbtools-7.0}/rbtools/testing/testcase.py +0 -0
  477. {rbtools-6.0 → rbtools-7.0}/rbtools/testing/transport.py +0 -0
  478. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/__init__.py +0 -0
  479. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/aliases.py +0 -0
  480. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/browser.py +0 -0
  481. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/checks.py +0 -0
  482. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/console.py +0 -0
  483. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/diffs.py +0 -0
  484. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/encoding.py +0 -0
  485. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/errors.py +0 -0
  486. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/filesystem.py +0 -0
  487. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/graphs.py +0 -0
  488. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/repository.py +0 -0
  489. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/review_request.py +0 -0
  490. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/source_tree.py +0 -0
  491. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/streams.py +0 -0
  492. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/__init__.py +0 -0
  493. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_aliases.py +0 -0
  494. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_buffered_iterator.py +0 -0
  495. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_checks.py +0 -0
  496. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_console.py +0 -0
  497. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_encoding.py +0 -0
  498. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_filesystem.py +0 -0
  499. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_mimetypes.py +0 -0
  500. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_process.py +0 -0
  501. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_repository.py +0 -0
  502. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_review_request.py +0 -0
  503. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_source_tree.py +0 -0
  504. {rbtools-6.0 → rbtools-7.0}/rbtools/utils/tests/test_web_login.py +0 -0
  505. {rbtools-6.0 → rbtools-7.0}/setup.cfg +0 -0
@@ -45,6 +45,7 @@ Contributors:
45
45
  * Chris Eagan
46
46
  * Chris Hunt
47
47
  * Chris Liu
48
+ * Conor Burgess
48
49
  * Craig Silverstein
49
50
  * Damian
50
51
  * Dana Lacoste
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: RBTools
3
- Version: 6.0
3
+ Version: 7.0
4
4
  Summary: Command line tools and API for working with code and document reviews on Review Board
5
5
  Author-email: "Beanbag, Inc." <questions@beanbaginc.com>
6
6
  License: MIT
@@ -29,15 +29,13 @@ License-File: COPYING
29
29
  License-File: AUTHORS
30
30
  Requires-Dist: appdirs~=1.4.4
31
31
  Requires-Dist: certifi>=2023.5.7
32
- Requires-Dist: colorama
33
32
  Requires-Dist: housekeeping~=1.1
34
33
  Requires-Dist: packaging>=21.3
35
34
  Requires-Dist: puremagic
36
35
  Requires-Dist: pydiffx~=1.1.0
37
- Requires-Dist: texttable
36
+ Requires-Dist: rich~=15.0
38
37
  Requires-Dist: typelets~=1.1.0
39
38
  Requires-Dist: typing_extensions>=4.3.0
40
- Requires-Dist: tqdm
41
39
  Requires-Dist: importlib-metadata>=5.0
42
40
  Requires-Dist: importlib-resources>=5.9
43
41
  Dynamic: license-file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: RBTools
3
- Version: 6.0
3
+ Version: 7.0
4
4
  Summary: Command line tools and API for working with code and document reviews on Review Board
5
5
  Author-email: "Beanbag, Inc." <questions@beanbaginc.com>
6
6
  License: MIT
@@ -29,15 +29,13 @@ License-File: COPYING
29
29
  License-File: AUTHORS
30
30
  Requires-Dist: appdirs~=1.4.4
31
31
  Requires-Dist: certifi>=2023.5.7
32
- Requires-Dist: colorama
33
32
  Requires-Dist: housekeeping~=1.1
34
33
  Requires-Dist: packaging>=21.3
35
34
  Requires-Dist: puremagic
36
35
  Requires-Dist: pydiffx~=1.1.0
37
- Requires-Dist: texttable
36
+ Requires-Dist: rich~=15.0
38
37
  Requires-Dist: typelets~=1.1.0
39
38
  Requires-Dist: typing_extensions>=4.3.0
40
- Requires-Dist: tqdm
41
39
  Requires-Dist: importlib-metadata>=5.0
42
40
  Requires-Dist: importlib-resources>=5.9
43
41
  Dynamic: license-file
@@ -141,6 +141,7 @@ docs/releasenotes/5.2.1.rst
141
141
  docs/releasenotes/5.2.rst
142
142
  docs/releasenotes/5.3.rst
143
143
  docs/releasenotes/6.0.rst
144
+ docs/releasenotes/7.0.rst
144
145
  docs/releasenotes/Makefile
145
146
  docs/releasenotes/conf.py
146
147
  docs/releasenotes/index.rst
@@ -244,7 +245,6 @@ rbtools/clients/sos.py
244
245
  rbtools/clients/svn.py
245
246
  rbtools/clients/tfs.py
246
247
  rbtools/clients/base/__init__.py
247
- rbtools/clients/base/patch.py
248
248
  rbtools/clients/base/registry.py
249
249
  rbtools/clients/base/repository.py
250
250
  rbtools/clients/base/scmclient.py
@@ -255,7 +255,6 @@ rbtools/clients/tests/test_clearcase.py
255
255
  rbtools/clients/tests/test_cvs.py
256
256
  rbtools/clients/tests/test_git.py
257
257
  rbtools/clients/tests/test_jujutsu.py
258
- rbtools/clients/tests/test_legacy_patcher.py
259
258
  rbtools/clients/tests/test_mercurial.py
260
259
  rbtools/clients/tests/test_p4.py
261
260
  rbtools/clients/tests/test_plastic.py
@@ -409,10 +408,13 @@ rbtools/commands/tests/test_alias.py
409
408
  rbtools/commands/tests/test_base_output.py
410
409
  rbtools/commands/tests/test_command_auth_session.py
411
410
  rbtools/commands/tests/test_command_initialization.py
411
+ rbtools/commands/tests/test_info.py
412
412
  rbtools/commands/tests/test_login.py
413
413
  rbtools/commands/tests/test_logout.py
414
414
  rbtools/commands/tests/test_main.py
415
+ rbtools/commands/tests/test_patch.py
415
416
  rbtools/commands/tests/test_post.py
417
+ rbtools/commands/tests/test_review.py
416
418
  rbtools/commands/tests/test_setup_completion.py
417
419
  rbtools/commands/tests/test_setup_repo.py
418
420
  rbtools/config/__init__.py
@@ -458,11 +460,17 @@ rbtools/testing/api/__init__.py
458
460
  rbtools/testing/api/payloads.py
459
461
  rbtools/testing/api/transport.py
460
462
  rbtools/testing/scripts/editor.py
463
+ rbtools/ui/__init__.py
464
+ rbtools/ui/console.py
465
+ rbtools/ui/theme.py
466
+ rbtools/ui/tests/__init__.py
467
+ rbtools/ui/tests/test_console.py
461
468
  rbtools/utils/__init__.py
462
469
  rbtools/utils/aliases.py
463
470
  rbtools/utils/browser.py
464
471
  rbtools/utils/checks.py
465
472
  rbtools/utils/commands.py
473
+ rbtools/utils/commit_messages.py
466
474
  rbtools/utils/console.py
467
475
  rbtools/utils/diffs.py
468
476
  rbtools/utils/encoding.py
@@ -481,6 +489,7 @@ rbtools/utils/tests/__init__.py
481
489
  rbtools/utils/tests/test_aliases.py
482
490
  rbtools/utils/tests/test_buffered_iterator.py
483
491
  rbtools/utils/tests/test_checks.py
492
+ rbtools/utils/tests/test_commit_messages.py
484
493
  rbtools/utils/tests/test_console.py
485
494
  rbtools/utils/tests/test_encoding.py
486
495
  rbtools/utils/tests/test_filesystem.py
@@ -1,13 +1,11 @@
1
1
  appdirs~=1.4.4
2
2
  certifi>=2023.5.7
3
- colorama
4
3
  housekeeping~=1.1
5
4
  packaging>=21.3
6
5
  puremagic
7
6
  pydiffx~=1.1.0
8
- texttable
7
+ rich~=15.0
9
8
  typelets~=1.1.0
10
9
  typing_extensions>=4.3.0
11
- tqdm
12
10
  importlib-metadata>=5.0
13
11
  importlib-resources>=5.9
@@ -30,15 +30,25 @@ set DEPS_DIR=%BUILD_BASE%\deps
30
30
  ::-------------------------------------------------------------------------
31
31
  :: Dependencies
32
32
  ::-------------------------------------------------------------------------
33
- set PYTHON_VERSION=3.10.11
33
+ set PYTHON_VERSION=3.13.15
34
34
 
35
35
  set PYTHON_URL_BASE=https://www.python.org/ftp/python
36
36
 
37
37
  set PYTHON_X64_FILENAME=python-%PYTHON_VERSION%-amd64.exe
38
38
  set PYTHON_X64_URL=%PYTHON_URL_BASE%/%PYTHON_VERSION%/%PYTHON_X64_FILENAME%
39
- set PYTHON_X64_MD5=a55e9c1e6421c84a4bd8b4be41492f51
39
+ set PYTHON_X64_SHA256=edec09c4853aeae9ac36efb8c9f95b6b8e2fee65eee56d9767a8b7c69c574403
40
40
  set PYTHON_X64_DEP=%DEPS_DIR%\python-%PYTHON_VERSION%-x64
41
41
 
42
+ set NUGET_VERSION=6.9.1
43
+ set NUGET_URL=https://dist.nuget.org/win-x86-commandline/v%NUGET_VERSION%/nuget.exe
44
+ set NUGET_SHA256=82bb13e2365e1e5ee7d0975618dcf90b279427de8a7ecb338b9b78bfc457d51b
45
+ set NUGET_DIR=%DEPS_DIR%\nuget-%NUGET_VERSION%
46
+ set NUGET_EXE=%NUGET_DIR%\nuget.exe
47
+
48
+ set TRUSTED_SIGNING_CLIENT_VERSION=1.0.60
49
+ set TRUSTED_SIGNING_CLIENT_DIR=%DEPS_DIR%\Microsoft.Trusted.Signing.Client.%TRUSTED_SIGNING_CLIENT_VERSION%
50
+ set AZURE_SIGN_DLIB_PATH=%TRUSTED_SIGNING_CLIENT_DIR%\bin\x64\Azure.CodeSigning.Dlib.dll
51
+
42
52
 
43
53
  ::-------------------------------------------------------------------------
44
54
  :: Binaries
@@ -49,12 +59,6 @@ set BUNDLED_PYTHON_X64=%BUNDLED_PYTHON_X64_DIR%\python.exe
49
59
  call :SetMSBuildPath || goto :Abort
50
60
 
51
61
 
52
- ::-------------------------------------------------------------------------
53
- :: Signing certificate
54
- ::-------------------------------------------------------------------------
55
- set CERT_THUMBPRINT_SHA1=88b278d63d192543884faa8cd97cc77ef74ef897
56
-
57
-
58
62
  ::-------------------------------------------------------------------------
59
63
  :: Begin the installation process
60
64
  ::-------------------------------------------------------------------------
@@ -63,9 +67,12 @@ if not exist "%BUILD_STAGE%" mkdir "%BUILD_STAGE%"
63
67
 
64
68
  call :InstallPython ^
65
69
  x64 %PYTHON_X64_DEP% %PYTHON_X64_FILENAME% ^
66
- %PYTHON_X64_URL% %PYTHON_X64_MD5% ^
70
+ %PYTHON_X64_URL% %PYTHON_X64_SHA256% ^
67
71
  || goto :Abort
68
72
 
73
+ call :InstallNuGet || goto :Abort
74
+ call :InstallTrustedSigningClient || goto :Abort
75
+ call :GenerateSigningMetadata || goto :Abort
69
76
  call :CreateBuildDirectory || goto :Abort
70
77
  call :InstallPackages || goto :Abort
71
78
  call :InstallRBTools || goto :Abort
@@ -80,14 +87,14 @@ exit /B 0
80
87
  ::-------------------------------------------------------------------------
81
88
  :: Installs Python
82
89
  ::-------------------------------------------------------------------------
83
- :InstallPython arch dep_path python_filename url md5
90
+ :InstallPython arch dep_path python_filename url sha256
84
91
  setlocal
85
92
 
86
93
  set _arch=%~1
87
94
  set _dep_path=%~2
88
95
  set _python_filename=%~3
89
96
  set _url=%~4
90
- set _md5=%~5
97
+ set _sha256=%~5
91
98
 
92
99
  echo.
93
100
  echo == Installing Python [%_arch%] ==
@@ -99,7 +106,7 @@ if not exist "%_dep_path%" (
99
106
  if not exist "%_PYTHON_INSTALLER%" (
100
107
  echo Preparing to download Python v%PYTHON_VERSION% [%_arch%]...
101
108
 
102
- call :DownloadAndVerify %_url% "%_PYTHON_INSTALLER%" %_md5%
109
+ call :DownloadAndVerify %_url% "%_PYTHON_INSTALLER%" SHA256 %_sha256%
103
110
  if %errorlevel% neq 0 exit /b 1
104
111
 
105
112
  echo Downloaded to %_PYTHON_INSTALLER%
@@ -130,6 +137,158 @@ if not exist "%_dep_path%" (
130
137
  exit /B 0
131
138
 
132
139
 
140
+ ::-------------------------------------------------------------------------
141
+ :: Download nuget.exe.
142
+ ::
143
+ :: This is needed for part of the Azure Artifact Signing setup.
144
+ ::-------------------------------------------------------------------------
145
+ :InstallNuGet
146
+ setlocal
147
+
148
+ echo.
149
+ echo == Installing NuGet [%NUGET_VERSION%] ==
150
+
151
+ if not exist "%NUGET_DIR%" mkdir "%NUGET_DIR%"
152
+
153
+ call :DownloadAndVerify %NUGET_URL% "%NUGET_EXE%" SHA256 %NUGET_SHA256%
154
+
155
+ if ERRORLEVEL 1 (
156
+ call :DeleteIfExists "%NUGET_EXE%"
157
+ exit /B 1
158
+ )
159
+
160
+ exit /B 0
161
+
162
+
163
+ ::-------------------------------------------------------------------------
164
+ :: Install the Azure Trusted Signing client.
165
+ ::
166
+ :: This installs to the dependency tree so signtool.exe can find it.
167
+ ::-------------------------------------------------------------------------
168
+ :InstallTrustedSigningClient
169
+ setlocal
170
+
171
+ echo.
172
+ echo == Installing Microsoft.Trusted.Signing.Client [%TRUSTED_SIGNING_CLIENT_VERSION%] ==
173
+
174
+ if not exist "%TRUSTED_SIGNING_CLIENT_DIR%" (
175
+ "%NUGET_EXE%" install Microsoft.Trusted.Signing.Client ^
176
+ -Version %TRUSTED_SIGNING_CLIENT_VERSION% ^
177
+ -OutputDirectory "%DEPS_DIR%" ^
178
+ -NonInteractive
179
+ if %errorlevel% neq 0 exit /B 1
180
+ )
181
+
182
+ if not exist "%AZURE_SIGN_DLIB_PATH%" (
183
+ echo Could not find the Azure Trusted Signing dlib at:
184
+ echo %AZURE_SIGN_DLIB_PATH%
185
+ exit /B 1
186
+ )
187
+
188
+ exit /B 0
189
+
190
+
191
+ ::-------------------------------------------------------------------------
192
+ :: Generate the Azure Trusted Signing metadata JSON file.
193
+ ::
194
+ :: This will populate the file from environment variables describing the
195
+ :: Artifact Signing account and certificate profile to use. The result will
196
+ :: be passed to signtool.exe in the build stage.
197
+ ::-------------------------------------------------------------------------
198
+ :GenerateSigningMetadata
199
+ setlocal
200
+
201
+ echo.
202
+ echo == Generating Azure Trusted Signing metadata ==
203
+
204
+ call :TrimTrailingSpaces "%AZURE_TRUSTED_SIGNING_ENDPOINT%" _endpoint
205
+ call :TrimTrailingSpaces "%AZURE_TRUSTED_SIGNING_ACCOUNT%" _account
206
+ call :TrimTrailingSpaces "%AZURE_TRUSTED_SIGNING_CERT_PROFILE%" _cert_profile
207
+
208
+ if "%_endpoint%" == "" (
209
+ echo AZURE_TRUSTED_SIGNING_ENDPOINT must be set.
210
+ exit /B 1
211
+ )
212
+
213
+ if "%_account%" == "" (
214
+ echo AZURE_TRUSTED_SIGNING_ACCOUNT must be set.
215
+ exit /B 1
216
+ )
217
+
218
+ if "%_cert_profile%" == "" (
219
+ echo AZURE_TRUSTED_SIGNING_CERT_PROFILE must be set.
220
+ exit /B 1
221
+ )
222
+
223
+ set _metadata_file=%DEPS_DIR%\trusted-signing-metadata.json
224
+
225
+ (
226
+ echo {
227
+ echo "Endpoint": "%_endpoint%",
228
+ echo "CodeSigningAccountName": "%_account%",
229
+ echo "CertificateProfileName": "%_cert_profile%"
230
+ echo }
231
+ ) > "%_metadata_file%"
232
+
233
+ endlocal & set AZURE_SIGN_METADATA_FILE=%_metadata_file%
234
+ exit /B 0
235
+
236
+
237
+ ::-------------------------------------------------------------------------
238
+ :: Get a token for communicating with Azure.
239
+ ::
240
+ :: This assumes the build process is running within an EC2 instance. It
241
+ :: will exchange the instance's identity for an Azure AD federated token,
242
+ :: which lets signtool.exe talk to Azure.
243
+ ::
244
+ :: The resulting token is good for a period of time, and is considered
245
+ :: sensitive data. It's stored under a non-guessable name in the temp
246
+ :: directory, and should be deleted once done.
247
+ ::-------------------------------------------------------------------------
248
+ :GetFederatedToken
249
+ setlocal
250
+
251
+ echo.
252
+ echo == Requesting an Azure federated token via AWS ==
253
+
254
+ call :TrimTrailingSpaces "%AZURE_TENANT_ID%" _tenant_id
255
+ call :TrimTrailingSpaces "%AZURE_CLIENT_ID%" _client_id
256
+
257
+ if "%_tenant_id%" == "" (
258
+ echo AZURE_TENANT_ID must be set.
259
+ exit /B 1
260
+ )
261
+
262
+ if "%_client_id%" == "" (
263
+ echo AZURE_CLIENT_ID must be set.
264
+ exit /B 1
265
+ )
266
+
267
+ where aws >NUL 2>&1
268
+ if %errorlevel% neq 0 (
269
+ echo The AWS CLI ^(aws.exe^) must be installed and on PATH.
270
+ exit /B 1
271
+ )
272
+
273
+ set _token_file=%TEMP%\rbtools-azure-token-%RANDOM%%RANDOM%.jwt
274
+
275
+ aws sts get-web-identity-token ^
276
+ --audience "api://AzureADTokenExchange" ^
277
+ --signing-algorithm RS256 ^
278
+ --duration-seconds 3600 ^
279
+ --query WebIdentityToken ^
280
+ --output text > "%_token_file%"
281
+
282
+ if %errorlevel% neq 0 (
283
+ echo Failed to obtain an AWS web identity token.
284
+ call :DeleteIfExists "%_token_file%"
285
+ exit /B 1
286
+ )
287
+
288
+ endlocal & set "AZURE_FEDERATED_TOKEN_FILE=%_token_file%" & set "AZURE_TENANT_ID=%_tenant_id%" & set "AZURE_CLIENT_ID=%_client_id%"
289
+ exit /B 0
290
+
291
+
133
292
  ::-------------------------------------------------------------------------
134
293
  :: Populates the build directory from dependencies
135
294
  ::-------------------------------------------------------------------------
@@ -247,9 +406,14 @@ if ERRORLEVEL 1 exit /B 1
247
406
 
248
407
  set _rbtools_version=%_return1%
249
408
 
409
+ :: Fetch the token as late as possible, so nothing can fail and accidentally
410
+ :: leave it sitting around before we get a chance to clean it up.
411
+ call :GetFederatedToken
412
+ if ERRORLEVEL 1 exit /B 1
413
+
250
414
  set _wix_path=%CD%\wix
251
415
  set _sln_file=%_wix_path%\rbtools.sln
252
- set _timestamp_url=http://timestamp.sectigo.com
416
+ set _timestamp_url=http://timestamp.acs.microsoft.com
253
417
 
254
418
  echo.
255
419
  echo == Building the RBTools installer [x64] ==
@@ -261,11 +425,16 @@ echo == Building the RBTools installer [x64] ==
261
425
  /p:Root="%BUILD_ROOT_X64%" ^
262
426
  /p:OutputPath="%BUILD_STAGE%\\" ^
263
427
  /p:SourcePath="%_wix_path%" ^
264
- /p:CertificateThumbprint=%CERT_THUMBPRINT_SHA1% ^
428
+ /p:AzureSignDlibPath="%AZURE_SIGN_DLIB_PATH%" ^
429
+ /p:AzureSignMetadataFile="%AZURE_SIGN_METADATA_FILE%" ^
265
430
  /p:TimestampUrl=%_timestamp_url% ^
266
431
  "%_sln_file%"
267
432
 
268
- if ERRORLEVEL 1 exit /B 1
433
+ set _msbuild_result=%ERRORLEVEL%
434
+
435
+ call :DeleteIfExists "%AZURE_FEDERATED_TOKEN_FILE%"
436
+
437
+ if %_msbuild_result% neq 0 exit /B 1
269
438
 
270
439
  mkdir "%BUILD_DEST%" 2>&1
271
440
  dir "%BUILD_STAGE%" /S
@@ -345,18 +514,19 @@ exit /B 0
345
514
  ::-------------------------------------------------------------------------
346
515
  :: Downloads and verifies a file from a URL.
347
516
  ::-------------------------------------------------------------------------
348
- :DownloadAndVerify url dest expected_hash
517
+ :DownloadAndVerify url dest algorithm expected_hash
349
518
  setlocal
350
519
 
351
520
  set _url=%~1
352
521
  set _dest=%~2
353
- set _expected_hash=%~3
522
+ set _algorithm=%~3
523
+ set _expected_hash=%~4
354
524
 
355
525
  if not exist "%_dest%" (
356
526
  call :DownloadFile %_url% "%_dest%" || exit /B 1
357
527
  )
358
528
 
359
- call :VerifyMD5 "%_dest%" %_expected_hash% || exit /B 1
529
+ call :VerifyHash "%_dest%" %_algorithm% %_expected_hash% || exit /B 1
360
530
 
361
531
  exit /B 0
362
532
 
@@ -380,21 +550,20 @@ exit /B 0
380
550
 
381
551
 
382
552
  ::-------------------------------------------------------------------------
383
- :: Verifies the MD5 checksum of a file.
553
+ :: Verifies the checksum of a file against a given hash algorithm.
384
554
  ::-------------------------------------------------------------------------
385
- :VerifyMD5 filename expected_hash
555
+ :VerifyHash filename algorithm expected_hash
386
556
  setlocal
387
557
 
388
558
  set _filename=%~1
389
- set _expected_hash=%~2
559
+ set _algorithm=%~2
560
+ set _expected_hash=%~3
390
561
 
391
- echo Verifying that %_filename% has MD5 hash %_expected_hash%...
562
+ echo Verifying that %_filename% has %_algorithm% hash %_expected_hash%...
392
563
 
393
564
  PowerShell -NoProfile -Command ^
394
- "$md5 = New-Object Security.Cryptography.MD5CryptoServiceProvider;"^
395
- "$file = [System.IO.File]::ReadAllBytes('%_filename%');"^
396
- "$hash = [System.BitConverter]::ToString($md5.ComputeHash($file));"^
397
- "$hash = $hash.toLower().Replace('-', '');"^
565
+ "$hash = (Get-FileHash -Path '%_filename%' -Algorithm %_algorithm%).Hash;"^
566
+ "$hash = $hash.ToLower();"^
398
567
  "if ($hash -eq '%_expected_hash%') {"^
399
568
  " Write-Host '%_filename% has a valid hash.';"^
400
569
  " exit 0;"^
@@ -408,6 +577,29 @@ echo Hash verified.
408
577
  exit /B 0
409
578
 
410
579
 
580
+ ::-------------------------------------------------------------------------
581
+ :: Trims trailing spaces from a value.
582
+ ::
583
+ :: This is used with environment variables to strip any trailing spaces.
584
+ :: This can happen pretty easily, since `set A=B && set C=D` will set
585
+ :: `A="B "`, and Azure can't handle this.
586
+ ::-------------------------------------------------------------------------
587
+ :TrimTrailingSpaces value varname
588
+ setlocal EnableDelayedExpansion
589
+
590
+ set "_str=%~1"
591
+
592
+ :TrimTrailingSpacesLoop
593
+
594
+ if defined _str if "!_str:~-1!" == " " (
595
+ set "_str=!_str:~0,-1!"
596
+ goto :TrimTrailingSpacesLoop
597
+ )
598
+
599
+ endlocal & set "%~2=%_str%"
600
+ exit /B 0
601
+
602
+
411
603
  ::-------------------------------------------------------------------------
412
604
  :: Deletes a file or directory if it exists.
413
605
  ::-------------------------------------------------------------------------
@@ -59,12 +59,14 @@
59
59
  </Target>
60
60
 
61
61
  <!-- Sign the bundled installer. -->
62
- <Target Name="SignBundleEngine">
63
- <Exec Command='"$(SignToolPath)" sign /fd SHA256 /sha1 $(CertificateThumbprint) /t $(TimestampUrl) "@(SignBundleEngine)"' />
62
+ <Target Name="SignBundleEngine"
63
+ DependsOnTargets="EnsureSignToolInstalled;EnsureAzureSignConfigured">
64
+ <Exec Command='"$(SignToolPath)" sign /fd SHA256 /tr $(TimestampUrl) /td SHA256 /dlib "$(AzureSignDlibPath)" /dmdf "$(AzureSignMetadataFile)" "@(SignBundleEngine)"' />
64
65
  </Target>
65
66
 
66
- <Target Name="SignBundle">
67
- <Exec Command='"$(SignToolPath)" sign /fd SHA256 /sha1 $(CertificateThumbprint) /t $(TimestampUrl) "@(SignBundle)"' />
67
+ <Target Name="SignBundle"
68
+ DependsOnTargets="EnsureSignToolInstalled;EnsureAzureSignConfigured">
69
+ <Exec Command='"$(SignToolPath)" sign /fd SHA256 /tr $(TimestampUrl) /td SHA256 /dlib "$(AzureSignDlibPath)" /dmdf "$(AzureSignMetadataFile)" "@(SignBundle)"' />
68
70
  </Target>
69
71
 
70
72
  <!-- Copy the built installer to the output directory. -->
@@ -10,8 +10,8 @@
10
10
 
11
11
  <!-- Code Signing Parameters -->
12
12
  <PropertyGroup>
13
- <SignOutput Condition="'$(CertificateThumbprint)' != ''">true</SignOutput>
14
- <TimestampUrl Condition="'$(TimestampUrl)' == ''">http://timestamp.verisign.com/scripts/timstamp.dll</TimestampUrl>
13
+ <SignOutput Condition="'$(AzureSignDlibPath)' != ''">true</SignOutput>
14
+ <TimestampUrl Condition="'$(TimestampUrl)' == ''">http://timestamp.acs.microsoft.com</TimestampUrl>
15
15
  </PropertyGroup>
16
16
 
17
17
  <!-- Code Signing Paths -->
@@ -26,4 +26,9 @@
26
26
  Condition=" '$(SignToolPath)' == '' OR !Exists('$(SignToolPath)') ">
27
27
  <Error Text="signtool.exe must be installed. It was expected at '$(SignToolPath)'. This may require an update to the list of supported SDK paths in the WiX installer." />
28
28
  </Target>
29
+
30
+ <Target Name="EnsureAzureSignConfigured"
31
+ Condition=" '$(AzureSignDlibPath)' == '' OR !Exists('$(AzureSignDlibPath)') OR '$(AzureSignMetadataFile)' == '' OR !Exists('$(AzureSignMetadataFile)') ">
32
+ <Error Text="Azure Trusted Signing is not configured correctly. AzureSignDlibPath ('$(AzureSignDlibPath)') and AzureSignMetadataFile ('$(AzureSignMetadataFile)') must both point to existing files." />
33
+ </Target>
29
34
  </Project>
@@ -55,14 +55,14 @@
55
55
  </Target>
56
56
 
57
57
  <!-- Sign the bundled cabinet files -->
58
- <Target Name="SignCabs">
59
- <SignFile CertificateThumbprint="$(CertificateThumbprint)"
60
- TimestampUrl="$(TimestampUrl)"
61
- SigningTarget="%(SignCabs.FullPath)"/>
58
+ <Target Name="SignCabs"
59
+ DependsOnTargets="EnsureSignToolInstalled;EnsureAzureSignConfigured">
60
+ <Exec Command='"$(SignToolPath)" sign /fd SHA256 /tr $(TimestampUrl) /td SHA256 /dlib "$(AzureSignDlibPath)" /dmdf "$(AzureSignMetadataFile)" "%(SignCabs.FullPath)"' />
62
61
  </Target>
63
62
 
64
63
  <!-- Sign the installer -->
65
- <Target Name="SignMsi">
66
- <Exec Command='"$(SignToolPath)" sign /debug /fd SHA256 /sha1 $(CertificateThumbprint) /t $(TimestampUrl) "%(SignMsi.FullPath)"' />
64
+ <Target Name="SignMsi"
65
+ DependsOnTargets="EnsureSignToolInstalled;EnsureAzureSignConfigured">
66
+ <Exec Command='"$(SignToolPath)" sign /debug /fd SHA256 /tr $(TimestampUrl) /td SHA256 /dlib "$(AzureSignDlibPath)" /dmdf "$(AzureSignMetadataFile)" "%(SignMsi.FullPath)"' />
67
67
  </Target>
68
68
  </Project>
@@ -129,7 +129,6 @@ Base Support
129
129
 
130
130
  rbtools.clients
131
131
  rbtools.clients.base
132
- rbtools.clients.base.patch
133
132
  rbtools.clients.base.registry
134
133
  rbtools.clients.base.repository
135
134
  rbtools.clients.base.scmclient
@@ -466,9 +466,17 @@ changes from a working directory. For example, Git, Mercurial and Bazaar.
466
466
 
467
467
  .. tip::
468
468
 
469
- :option:`-g/--guess-fields <-g>` implies :option:`--guess-summary` and
470
- :option:`--guess-description`. Generally, you'll want to use it instead
471
- of the more specific options.
469
+ :option:`-g/--guess-fields <-g>` applies to every field, and takes
470
+ precedence over :option:`--guess-summary` and :option:`--guess-description`.
471
+ Generally, you'll want to use it instead of the more specific options.
472
+
473
+ .. versionchanged:: 7.0
474
+
475
+ :option:`-g/--guess-fields <-g>` now applies to every review request field
476
+ that can be filled in from a commit message, rather than only the summary
477
+ and description. When provided, it also overrides
478
+ :option:`--guess-summary` and :option:`--guess-description` rather than
479
+ just supplying their default.
472
480
 
473
481
 
474
482
  .. _guessing-behavior:
@@ -498,9 +506,9 @@ For example:
498
506
 
499
507
  $ rbt post --guess-fields=no
500
508
 
501
- By default, if no guessing options are specified, ``--guess-fields=auto`` will
502
- be implied. This allows you to run the following and have it automatically
503
- fill in the summary and description:
509
+ By default, if no guessing options are specified, ``auto`` will be used for
510
+ every field. This allows you to run the following and have it automatically
511
+ fill in the fields found in the commit message:
504
512
 
505
513
  .. code-block:: console
506
514
 
@@ -530,9 +538,9 @@ values.
530
538
  On RBTools 0.6 or higher, the default is ``'auto'``. On older versions,
531
539
  the default was ``False`` (equivalent to ``'no'``).
532
540
 
533
- Setting ``GUESS_FIELDS`` will imply setting ``GUESS_SUMMARY`` and
534
- ``GUESS_DESCRIPTION``. Rarely will you need to set anything but
535
- ``GUESS_FIELDS``.
541
+ Setting ``GUESS_FIELDS`` applies to every field, and takes precedence over
542
+ ``GUESS_SUMMARY`` and ``GUESS_DESCRIPTION``. Rarely will you need to set
543
+ anything but ``GUESS_FIELDS``.
536
544
 
537
545
  For example, to default to guessing fields for review requests that are either
538
546
  newly created or being updated, you can use::
@@ -540,6 +548,19 @@ newly created or being updated, you can use::
540
548
  GUESS_FIELDS = 'yes'
541
549
 
542
550
 
551
+ .. _configuring-guessing-parsing:
552
+
553
+ Configuring Commit Message Parsing
554
+ ----------------------------------
555
+
556
+ When field guessing is enabled, the contents of fields will be parsed from your
557
+ commit messages.
558
+
559
+ If you have commit messages that are formatted in a particular way and would
560
+ like to change how fields are guessed, you may define
561
+ :rbtconfig:`COMMIT_MESSAGE_PARSER`.
562
+
563
+
543
564
  .. _automating-rbt-post:
544
565
 
545
566
  Automating rbt post