| Index: git_map_branches.py
|
| diff --git a/git_map_branches.py b/git_map_branches.py
|
| index fc6c8cec46f907df097fa5437820a7f6c805c50b..73517903c2a3096e031201fe656f7e4bf68945c8 100755
|
| --- a/git_map_branches.py
|
| +++ b/git_map_branches.py
|
| @@ -19,9 +19,11 @@ 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
|
| - * Magenta - a placeholder for the '{NO UPSTREAM}' "branch". If you have
|
| - local branches which do not track any upstream, then you will see this.
|
| + * Magenta - a tag
|
| + * Magenta '{NO UPSTREAM}' - If you have local branches which do not track any
|
| + upstream, then you will see this.
|
| """
|
| +
|
| import collections
|
| import sys
|
|
|
| @@ -29,15 +31,14 @@ from third_party import colorama
|
| from third_party.colorama import Fore, Style
|
|
|
| from git_common import current_branch, branches, upstream, hash_one, hash_multi
|
| +from git_common import tags
|
|
|
| NO_UPSTREAM = '{NO UPSTREAM}'
|
|
|
| -def print_branch(cur, cur_hash, branch, branch_hashes, par_map, branch_map,
|
| - depth=0):
|
| - branch_hash = branch_hashes[branch]
|
| +def color_for_branch(branch, branch_hash, cur_hash, tag_set):
|
| if branch.startswith('origin'):
|
| color = Fore.RED
|
| - elif branch == NO_UPSTREAM:
|
| + elif branch == NO_UPSTREAM or branch in tag_set:
|
| color = Fore.MAGENTA
|
| elif branch_hash == cur_hash:
|
| color = Fore.CYAN
|
| @@ -49,6 +50,15 @@ def print_branch(cur, cur_hash, branch, branch_hashes, par_map, branch_map,
|
| else:
|
| color += Style.NORMAL
|
|
|
| + return color
|
| +
|
| +
|
| +def print_branch(cur, cur_hash, branch, branch_hashes, par_map, branch_map,
|
| + tag_set, depth=0):
|
| + branch_hash = branch_hashes[branch]
|
| +
|
| + color = color_for_branch(branch, branch_hash, cur_hash, tag_set)
|
| +
|
| suffix = ''
|
| if cur == 'HEAD':
|
| if branch_hash == cur_hash:
|
| @@ -59,7 +69,7 @@ def print_branch(cur, cur_hash, branch, branch_hashes, par_map, branch_map,
|
| print color + " "*depth + branch + suffix
|
| for child in par_map.pop(branch, ()):
|
| print_branch(cur, cur_hash, child, branch_hashes, par_map, branch_map,
|
| - depth=depth+1)
|
| + tag_set, depth=depth+1)
|
|
|
|
|
| def main(argv):
|
| @@ -77,13 +87,14 @@ def main(argv):
|
| current_hash = hashes[0]
|
| par_hashes = {k: hashes[i+1] for i, k in enumerate(branch_map.iterkeys())}
|
| par_hashes[NO_UPSTREAM] = 0
|
| + tag_set = tags()
|
| while par_map:
|
| for parent in par_map:
|
| if parent not in branch_map:
|
| if parent not in par_hashes:
|
| par_hashes[parent] = hash_one(parent)
|
| print_branch(current, current_hash, parent, par_hashes, par_map,
|
| - branch_map)
|
| + branch_map, tag_set)
|
| break
|
|
|
|
|
|
|