Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Unified Diff: git_cl.py

Issue 1913923002: Revert of Use CLs more consistently instead of branch names (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: git_cl.py
diff --git a/git_cl.py b/git_cl.py
index bb31fa0ad9705de247d21e310e4e7f4fe16d7e27..d8fd642246aaff5e6f64f02b96b497517d4f74aa 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -17,9 +17,11 @@
import logging
import optparse
import os
+import Queue
import re
import stat
import sys
+import tempfile
import textwrap
import time
import traceback
@@ -2897,8 +2899,20 @@
'error': Fore.WHITE,
}.get(status, Fore.WHITE)
+def fetch_cl_status(branch, auth_config=None):
+ """Fetches information for an issue and returns (branch, issue, status)."""
+ cl = Changelist(branchref=branch, auth_config=auth_config)
+ url = cl.GetIssueURL()
+ status = cl.GetStatus()
+
+ if url and (not status or status == 'error'):
+ # The issue probably doesn't exist anymore.
+ url += ' (broken)'
+
+ return (branch, url, status)
+
def get_cl_statuses(
- changes, fine_grained, max_processes=None):
+ branches, fine_grained, max_processes=None, auth_config=None):
"""Returns a blocking iterable of (branch, issue, color) for given branches.
If fine_grained is true, this will fetch CL statuses from the server.
@@ -2914,21 +2928,23 @@
if fine_grained:
# Process one branch synchronously to work through authentication, then
# spawn processes to process all the other branches in parallel.
- if changes:
- fetch = lambda cl: (cl, cl.GetStatus())
- yield fetch(changes[0])
-
- changes_to_fetch = changes[1:]
+ if branches:
+ fetch = lambda branch: fetch_cl_status(branch, auth_config=auth_config)
+ yield fetch(branches[0])
+
+ branches_to_fetch = branches[1:]
pool = ThreadPool(
- min(max_processes, len(changes_to_fetch))
+ min(max_processes, len(branches_to_fetch))
if max_processes is not None
- else len(changes_to_fetch))
- for x in pool.imap_unordered(fetch, changes_to_fetch):
+ else len(branches_to_fetch))
+ for x in pool.imap_unordered(fetch, branches_to_fetch):
yield x
else:
# Do not use GetApprovingReviewers(), since it requires an HTTP request.
- for cl in changes:
- yield (cl, 'waiting' if cl.GetIssueURL() else 'error')
+ for b in branches:
+ cl = Changelist(branchref=b, auth_config=auth_config)
+ url = cl.GetIssueURL()
+ yield (b, url, 'waiting' if url else 'error')
def upload_branch_deps(cl, args):
@@ -3081,27 +3097,25 @@
print('No local branch found.')
return 0
- changes = [
+ changes = (
Changelist(branchref=b, auth_config=auth_config)
- for b in branches.splitlines()]
+ for b in branches.splitlines())
+ # TODO(tandrii): refactor to use CLs list instead of branches list.
+ branches = [c.GetBranch() for c in changes]
+ alignment = max(5, max(len(b) for b in branches))
print 'Branches associated with reviews:'
- output = get_cl_statuses(changes,
+ output = get_cl_statuses(branches,
fine_grained=not options.fast,
- max_processes=options.maxjobs)
+ max_processes=options.maxjobs,
+ auth_config=auth_config)
branch_statuses = {}
- alignment = max(5, max(len(ShortBranchName(c.GetBranch())) for c in changes))
- for cl in sorted(changes, key=lambda c: c.GetBranch()):
- branch = cl.GetBranch()
+ alignment = max(5, max(len(ShortBranchName(b)) for b in branches))
+ for branch in sorted(branches):
while branch not in branch_statuses:
- c, status = output.next()
- branch_statuses[c.GetBranch()] = status
- status = branch_statuses.pop(branch)
- url = cl.GetIssueURL()
- if url and (not status or status == 'error'):
- # The issue probably doesn't exist anymore.
- url += ' (broken)'
-
+ b, i, status = output.next()
+ branch_statuses[b] = (i, status)
+ issue_url, status = branch_statuses.pop(branch)
color = color_for_status(status)
reset = Fore.RESET
if not setup_color.IS_TTY:
@@ -3109,8 +3123,8 @@
reset = ''
status_str = '(%s)' % status if status else ''
print ' %*s : %s%s %s%s' % (
- alignment, ShortBranchName(branch), color, url,
- status_str, reset)
+ alignment, ShortBranchName(branch), color, issue_url, status_str,
+ reset)
cl = Changelist(auth_config=auth_config)
print
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698