Commit 4c82eb51 authored by iannucci@chromium.org's avatar iannucci@chromium.org

Fix git-map-branches crashing on HEAD, and other minor quality-of-life

improvements.

  * No longer crash on HEAD
  * Always correctly highlight lines based on hash-matching-ness
  * Only import git_cl if you want it (it can be slow)
  * Print a message when NO branches are found (instead of blank output)

R=calamity@chromium.org, jsbell@chromium.org
BUG=410353

Review URL: https://codereview.chromium.org/554523003

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@291847 0039d316-1c4b-4281-b951-d872f2087c98
parent 745ffa64
...@@ -32,9 +32,7 @@ from third_party import colorama ...@@ -32,9 +32,7 @@ from third_party import colorama
from third_party.colorama import Fore, Style from third_party.colorama import Fore, Style
from git_common import current_branch, upstream, tags, get_branches_info from git_common import current_branch, upstream, tags, get_branches_info
from git_common import get_git_version, MIN_UPSTREAM_TRACK_GIT_VERSION from git_common import get_git_version, MIN_UPSTREAM_TRACK_GIT_VERSION, hash_one
import git_cl
DEFAULT_SEPARATOR = ' ' * 4 DEFAULT_SEPARATOR = ' ' * 4
...@@ -141,11 +139,16 @@ class BranchMapper(object): ...@@ -141,11 +139,16 @@ class BranchMapper(object):
self.__parent_map[parent].append(branch) self.__parent_map[parent].append(branch)
self.__current_branch = current_branch() self.__current_branch = current_branch()
self.__current_hash = self.__branches_info[self.__current_branch].hash self.__current_hash = hash_one('HEAD', short=True)
self.__tag_set = tags() self.__tag_set = tags()
for root in sorted(roots): if roots:
self.__append_branch(root) for root in sorted(roots):
self.__append_branch(root)
else:
no_branches = OutputLine()
no_branches.append('No User Branches')
self.output.append(no_branches)
def __is_invalid_parent(self, parent): def __is_invalid_parent(self, parent):
return not parent or parent in self.__gone_branches return not parent or parent in self.__gone_branches
...@@ -155,12 +158,12 @@ class BranchMapper(object): ...@@ -155,12 +158,12 @@ class BranchMapper(object):
color = Fore.RED color = Fore.RED
elif self.__is_invalid_parent(branch) or branch in self.__tag_set: elif self.__is_invalid_parent(branch) or branch in self.__tag_set:
color = Fore.MAGENTA color = Fore.MAGENTA
elif branch_hash == self.__current_hash: elif self.__current_hash.startswith(branch_hash):
color = Fore.CYAN color = Fore.CYAN
else: else:
color = Fore.GREEN color = Fore.GREEN
if branch_hash == self.__current_hash: if self.__current_hash.startswith(branch_hash):
color += Style.BRIGHT color += Style.BRIGHT
else: else:
color += Style.NORMAL color += Style.NORMAL
...@@ -171,7 +174,10 @@ class BranchMapper(object): ...@@ -171,7 +174,10 @@ class BranchMapper(object):
"""Recurses through the tree structure and appends an OutputLine to the """Recurses through the tree structure and appends an OutputLine to the
OutputManager for each branch.""" OutputManager for each branch."""
branch_info = self.__branches_info[branch] branch_info = self.__branches_info[branch]
branch_hash = branch_info.hash if branch_info else None if branch_info:
branch_hash = branch_info.hash
else:
branch_hash = hash_one(branch, short=True)
line = OutputLine() line = OutputLine()
...@@ -225,6 +231,7 @@ class BranchMapper(object): ...@@ -225,6 +231,7 @@ class BranchMapper(object):
# The Rietveld issue associated with the branch. # The Rietveld issue associated with the branch.
if self.verbosity >= 2: if self.verbosity >= 2:
import git_cl # avoid heavy import cost unless we need it
none_text = '' if self.__is_invalid_parent(branch) else 'None' none_text = '' if self.__is_invalid_parent(branch) else 'None'
url = git_cl.Changelist(branchref=branch).GetIssueURL() url = git_cl.Changelist(branchref=branch).GetIssueURL()
line.append(url or none_text, color=Fore.BLUE if url else Fore.WHITE) line.append(url or none_text, color=Fore.BLUE if url else Fore.WHITE)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment