Source code for show_authors

#!/usr/bin/env python
from __future__ import print_function
from __future__ import absolute_import
import shlex
import subprocess

[docs]def main(): args = shlex.split('git log --pretty=format:"%an <%ae>"') p = subprocess.Popen(args, stdout=subprocess.PIPE) out = p.communicate()[0].decode('utf-8').split('\n') done = set() e2n = {} unique = [] counts = {} for line in reversed(out): line = line.strip() if not len(line): continue name, email = line.split(' <') name = name.strip() email = '<' + email.strip() if not name in done: if email not in e2n: done.add(name) e2n[email] = name unique.append(name) elif name not in counts[e2n[email]]: counts[e2n[email]].append(name) name = e2n.get(email, name) record = counts.setdefault(name, [0, email]) record[0] += 1 if not email in record[1:]: record.append(email) print('List of contributors ordered by date of the first commit,' ' with commit counts:') for line in unique: record = counts[line] print(('%6d %s %s' % (record[0], line, ', '.join(record[1:]))))
if __name__ == '__main__': main()