| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 # Copyright (C) 2008 Evan Martin <martine@danga.com> | 6 # Copyright (C) 2008 Evan Martin <martine@danga.com> |
| 7 | 7 |
| 8 """A git-command for integrating reviews on Rietveld.""" | 8 """A git-command for integrating reviews on Rietveld.""" |
| 9 | 9 |
| 10 from distutils.version import LooseVersion | 10 from distutils.version import LooseVersion |
| (...skipping 1191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1202 if url: | 1202 if url: |
| 1203 print url | 1203 print url |
| 1204 return 0 | 1204 return 0 |
| 1205 | 1205 |
| 1206 branches = RunGit(['for-each-ref', '--format=%(refname)', 'refs/heads']) | 1206 branches = RunGit(['for-each-ref', '--format=%(refname)', 'refs/heads']) |
| 1207 if not branches: | 1207 if not branches: |
| 1208 print('No local branch found.') | 1208 print('No local branch found.') |
| 1209 return 0 | 1209 return 0 |
| 1210 | 1210 |
| 1211 changes = (Changelist(branchref=b) for b in branches.splitlines()) | 1211 changes = (Changelist(branchref=b) for b in branches.splitlines()) |
| 1212 branches = dict((c.GetBranch(), c.GetIssueURL()) for c in changes) | 1212 branches = [c.GetBranch() for c in changes] |
| 1213 alignment = max(5, max(len(b) for b in branches)) | 1213 alignment = max(5, max(len(b) for b in branches)) |
| 1214 print 'Branches associated with reviews:' | 1214 print 'Branches associated with reviews:' |
| 1215 # Adhoc thread pool to request data concurrently. | 1215 # Adhoc thread pool to request data concurrently. |
| 1216 output = Queue.Queue() | 1216 output = Queue.Queue() |
| 1217 | 1217 |
| 1218 # Silence upload.py otherwise it becomes unweldly. | 1218 # Silence upload.py otherwise it becomes unweldly. |
| 1219 upload.verbosity = 0 | 1219 upload.verbosity = 0 |
| 1220 | 1220 |
| 1221 if not options.fast: | 1221 if not options.fast: |
| 1222 def fetch(b): | 1222 def fetch(b): |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1248 color = Fore.GREEN | 1248 color = Fore.GREEN |
| 1249 elif not msgs: | 1249 elif not msgs: |
| 1250 # No message was sent. | 1250 # No message was sent. |
| 1251 color = Fore.RED | 1251 color = Fore.RED |
| 1252 elif msgs[-1]['sender'] != props.get('owner_email'): | 1252 elif msgs[-1]['sender'] != props.get('owner_email'): |
| 1253 color = Fore.YELLOW | 1253 color = Fore.YELLOW |
| 1254 else: | 1254 else: |
| 1255 color = Fore.BLUE | 1255 color = Fore.BLUE |
| 1256 output.put((b, i, color)) | 1256 output.put((b, i, color)) |
| 1257 | 1257 |
| 1258 threads = [threading.Thread(target=fetch, args=(b,)) for b in branches] | 1258 # Process one branch synchronously to work through authentication, then |
| 1259 # spawn threads to process all the other branches in parallel. |
| 1260 if branches: |
| 1261 fetch(branches[0]) |
| 1262 threads = [ |
| 1263 threading.Thread(target=fetch, args=(b,)) for b in branches[1:]] |
| 1259 for t in threads: | 1264 for t in threads: |
| 1260 t.daemon = True | 1265 t.daemon = True |
| 1261 t.start() | 1266 t.start() |
| 1262 else: | 1267 else: |
| 1263 # Do not use GetApprovingReviewers(), since it requires an HTTP request. | 1268 # Do not use GetApprovingReviewers(), since it requires an HTTP request. |
| 1264 for b in branches: | 1269 for b in branches: |
| 1265 c = Changelist(branchref=b) | 1270 c = Changelist(branchref=b) |
| 1266 url = c.GetIssueURL() | 1271 url = c.GetIssueURL() |
| 1267 output.put((b, url, Fore.BLUE if url else Fore.WHITE)) | 1272 output.put((b, url, Fore.BLUE if url else Fore.WHITE)) |
| 1268 | 1273 |
| (...skipping 1271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2540 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith ' | 2545 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith ' |
| 2541 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) | 2546 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) |
| 2542 | 2547 |
| 2543 | 2548 |
| 2544 if __name__ == '__main__': | 2549 if __name__ == '__main__': |
| 2545 # These affect sys.stdout so do it outside of main() to simplify mocks in | 2550 # These affect sys.stdout so do it outside of main() to simplify mocks in |
| 2546 # unit testing. | 2551 # unit testing. |
| 2547 fix_encoding.fix_encoding() | 2552 fix_encoding.fix_encoding() |
| 2548 colorama.init() | 2553 colorama.init() |
| 2549 sys.exit(main(sys.argv[1:])) | 2554 sys.exit(main(sys.argv[1:])) |
| OLD | NEW |