def do_delete(branches, print=print): pulls = set(branches) & set(Git.pull_branches()) if pulls: raise Exception("Can't delete pull branches: " + ' '.join(pulls)) success = set() for b in branches: try: Git.remove_local_branch(b, print=print) success.add(b) except: print and print('No local branch %s.' % b) try: Git.remove_origin_branch(b, print=print) success.add(b) except: print and print('No origin branch %s.' % b) return success, set(branches) - success
def branches(prefix='', *args): root = GitRoot.root_container() pulls = Git.pull_branches() if not ARGS.expanded: fname = [''] def before(f): fname[0] = os.path.basename(f) def callback(data): parts = filter(None, data.splitlines()) for i, p in enumerate(parts): branch = p.split()[-1] if branch in pulls: branch += '(%s)' % pulls[branch] if p.startswith('*'): branch = '*' + branch parts[i] = branch print('%-12s %s' % (fname[0] + ':', ' '.join(parts))) Call.for_each_directory( BRANCH_COMMAND, path=root, select=GitRoot.select(prefix), before=before, callback=callback) else: def before(f): print('\n%s:' % os.path.basename(f)) Call.for_each_directory( BRANCH_COMMAND, path=root, select=GitRoot.select(prefix), before=before) if args: print('ERROR: arguments %s ignored' % ', '.join(args))