mirror of https://gerrit.osmocom.org/osmo-dev
69 lines
1.9 KiB
Python
Executable File
69 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import sys, subprocess, re
|
|
|
|
if len(sys.argv) < 2:
|
|
print("Usage: %s <git_dir> [...]\nThis is mostly here for helping the 'st' script." % sys.argv[0])
|
|
exit(1)
|
|
|
|
interesting_branch_names = [ 'master', 'sysmocom/iu', 'sysmocom/sccp', 'aper-prefix-onto-upstream' ]
|
|
|
|
re_branch_name = re.compile('^..([^ ]+) .*')
|
|
re_ahead = re.compile('ahead [0-9]+|behind [0-9]+')
|
|
|
|
def branch_name(line):
|
|
m = re_branch_name.match(line)
|
|
return m.group(1)
|
|
|
|
interesting = []
|
|
|
|
def do_one_git(git_dir):
|
|
global interesting
|
|
branch_strs = subprocess.check_output(('git', '-C', git_dir, 'branch', '-vv')).decode('utf-8').splitlines()
|
|
interesting_branches = []
|
|
|
|
for line in branch_strs:
|
|
name = branch_name(line)
|
|
current_branch = False
|
|
if line.startswith('*'):
|
|
current_branch = True
|
|
elif name not in interesting_branch_names:
|
|
continue
|
|
ahead = re_ahead.findall(line)
|
|
if not ahead and not current_branch:
|
|
continue
|
|
ahead = [x.replace('ahead ', '+').replace('behind ', '-') for x in ahead]
|
|
br = (current_branch, name, ahead)
|
|
if current_branch:
|
|
interesting_branches.insert(0, br)
|
|
else:
|
|
interesting_branches.append(br)
|
|
|
|
status = subprocess.check_output(('git', '-C', git_dir, 'status')).decode()
|
|
has_mods = 'modified:' in status
|
|
|
|
interesting.append((git_dir, has_mods, interesting_branches))
|
|
|
|
|
|
for git_dir in sys.argv[1:]:
|
|
do_one_git(git_dir)
|
|
|
|
|
|
first_col = max([len(git_dir) for git_dir, _, _ in interesting])
|
|
first_col_fmt = '%' + str(first_col) + 's'
|
|
|
|
for git_dir, has_mods, interesting_branches in interesting:
|
|
strs = [first_col_fmt % git_dir,]
|
|
if has_mods:
|
|
strs.append('MODS')
|
|
for current_branch, name, ahead in interesting_branches:
|
|
br = []
|
|
br.append(name)
|
|
if ahead:
|
|
br.append('[%s]' % '|'.join(ahead))
|
|
strs.append(''.join(br))
|
|
|
|
print(' '.join(strs))
|
|
|
|
# vim: shiftwidth=2 expandtab tabstop=2
|