Index: git_map_branches.py |
diff --git a/git_map_branches.py b/git_map_branches.py |
index 350fed37a15551bbb5f54791dfb6f6df32921f52..44f13c3bd5abc010269e48d05d6d82a7374ddf65 100755 |
--- a/git_map_branches.py |
+++ b/git_map_branches.py |
@@ -19,6 +19,7 @@ Branches are colorized as follows: |
* Note that multiple branches may be Cyan, if they are all on the same |
commit, and you have that commit checked out. |
* Green - a local branch |
+ * Blue - a 'branch-heads' branch |
* Magenta - a tag |
* Magenta '{NO UPSTREAM}' - If you have local branches which do not track any |
upstream, then you will see this. |
@@ -27,6 +28,7 @@ Branches are colorized as follows: |
import argparse |
import collections |
import sys |
+import subprocess2 |
from third_party import colorama |
from third_party.colorama import Fore, Style |
@@ -126,7 +128,7 @@ class BranchMapper(object): |
continue |
parent = branch_info.upstream |
- if parent and not self.__branches_info[parent]: |
+ if not self.__branches_info[parent]: |
branch_upstream = upstream(branch) |
# If git can't find the upstream, mark the upstream as gone. |
if branch_upstream: |
@@ -156,6 +158,8 @@ class BranchMapper(object): |
def __color_for_branch(self, branch, branch_hash): |
if branch.startswith('origin'): |
color = Fore.RED |
+ elif branch.startswith('branch-heads'): |
+ color = Fore.BLUE |
elif self.__is_invalid_parent(branch) or branch in self.__tag_set: |
color = Fore.MAGENTA |
elif self.__current_hash.startswith(branch_hash): |
@@ -163,7 +167,7 @@ class BranchMapper(object): |
else: |
color = Fore.GREEN |
- if self.__current_hash.startswith(branch_hash): |
+ if branch_hash and self.__current_hash.startswith(branch_hash): |
color += Style.BRIGHT |
else: |
color += Style.NORMAL |
@@ -177,7 +181,10 @@ class BranchMapper(object): |
if branch_info: |
branch_hash = branch_info.hash |
else: |
- branch_hash = hash_one(branch, short=True) |
+ try: |
+ branch_hash = hash_one(branch, short=True) |
+ except subprocess2.CalledProcessError: |
+ branch_hash = None |
line = OutputLine() |
@@ -233,7 +240,8 @@ class BranchMapper(object): |
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' |
- url = git_cl.Changelist(branchref=branch).GetIssueURL() |
+ url = git_cl.Changelist( |
+ branchref=branch).GetIssueURL() if branch_hash else None |
line.append(url or none_text, color=Fore.BLUE if url else Fore.WHITE) |
self.output.append(line) |