mirror of
https://chromium.googlesource.com/chromium/tools/depot_tools.git
synced 2026-01-11 18:51:29 +00:00
Skip tracking status in map-branches when -v flag is not supplied.
This CL prevents map-branches from loading the tracking status when the -v flag is not supplied. This prevents the vanilla map-branches from taking a potentially long time to retrieve the tracking status. BUG=410137 Review URL: https://codereview.chromium.org/536793002 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@291846 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
@@ -31,7 +31,7 @@ import sys
|
||||
from third_party import colorama
|
||||
from third_party.colorama import Fore, Style
|
||||
|
||||
from git_common import current_branch, upstream, tags, get_all_tracking_info
|
||||
from git_common import current_branch, upstream, tags, get_branches_info
|
||||
from git_common import get_git_version, MIN_UPSTREAM_TRACK_GIT_VERSION
|
||||
|
||||
import git_cl
|
||||
@@ -103,42 +103,48 @@ class BranchMapper(object):
|
||||
"""A class which constructs output representing the tree's branch structure.
|
||||
|
||||
Attributes:
|
||||
__tracking_info: a map of branches to their TrackingInfo objects which
|
||||
__branches_info: a map of branches to their BranchesInfo objects which
|
||||
consist of the branch hash, upstream and ahead/behind status.
|
||||
__gone_branches: a set of upstreams which are not fetchable by git"""
|
||||
|
||||
def __init__(self):
|
||||
self.verbosity = 0
|
||||
self.output = OutputManager()
|
||||
self.__tracking_info = get_all_tracking_info()
|
||||
self.__gone_branches = set()
|
||||
self.__roots = set()
|
||||
self.__branches_info = None
|
||||
self.__parent_map = collections.defaultdict(list)
|
||||
self.__current_branch = None
|
||||
self.__current_hash = None
|
||||
self.__tag_set = None
|
||||
|
||||
def start(self):
|
||||
self.__branches_info = get_branches_info(
|
||||
include_tracking_status=self.verbosity >= 1)
|
||||
roots = set()
|
||||
|
||||
# A map of parents to a list of their children.
|
||||
self.parent_map = collections.defaultdict(list)
|
||||
for branch, branch_info in self.__tracking_info.iteritems():
|
||||
for branch, branch_info in self.__branches_info.iteritems():
|
||||
if not branch_info:
|
||||
continue
|
||||
|
||||
parent = branch_info.upstream
|
||||
if parent and not self.__tracking_info[parent]:
|
||||
if parent and not self.__branches_info[parent]:
|
||||
branch_upstream = upstream(branch)
|
||||
# If git can't find the upstream, mark the upstream as gone.
|
||||
if branch_upstream:
|
||||
parent = branch_upstream
|
||||
else:
|
||||
self.__gone_branches.add(parent)
|
||||
# A parent that isn't in the tracking info is a root.
|
||||
self.__roots.add(parent)
|
||||
# A parent that isn't in the branches info is a root.
|
||||
roots.add(parent)
|
||||
|
||||
self.parent_map[parent].append(branch)
|
||||
self.__parent_map[parent].append(branch)
|
||||
|
||||
self.__current_branch = current_branch()
|
||||
self.__current_hash = self.__tracking_info[self.__current_branch].hash
|
||||
self.__current_hash = self.__branches_info[self.__current_branch].hash
|
||||
self.__tag_set = tags()
|
||||
|
||||
def start(self):
|
||||
for root in sorted(self.__roots):
|
||||
for root in sorted(roots):
|
||||
self.__append_branch(root)
|
||||
|
||||
def __is_invalid_parent(self, parent):
|
||||
@@ -164,7 +170,7 @@ class BranchMapper(object):
|
||||
def __append_branch(self, branch, depth=0):
|
||||
"""Recurses through the tree structure and appends an OutputLine to the
|
||||
OutputManager for each branch."""
|
||||
branch_info = self.__tracking_info[branch]
|
||||
branch_info = self.__branches_info[branch]
|
||||
branch_hash = branch_info.hash if branch_info else None
|
||||
|
||||
line = OutputLine()
|
||||
@@ -225,7 +231,7 @@ class BranchMapper(object):
|
||||
|
||||
self.output.append(line)
|
||||
|
||||
for child in sorted(self.parent_map.pop(branch, ())):
|
||||
for child in sorted(self.__parent_map.pop(branch, ())):
|
||||
self.__append_branch(child, depth=depth + 1)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user