| Index: git_map_branches.py
|
| diff --git a/git_map_branches.py b/git_map_branches.py
|
| index e18202b56349c9a406b10fe87c02a441911617b0..038142e00c570b9cbf615f07d220a037a7e4e263 100755
|
| --- a/git_map_branches.py
|
| +++ b/git_map_branches.py
|
| @@ -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)
|
|
|
|
|
|
|