Last active
March 9, 2018 17:00
-
-
Save NakedFerret/2f87ff66578816d230eba61417f9e1ff to your computer and use it in GitHub Desktop.
Python script that queries git to list contributors to your files. Can ignore people and detect multiple username for one contributor. Outputs CSV
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import subprocess | |
# Inspiration: https://stackoverflow.com/a/11740682 | |
r = subprocess.check_output(['git','ls-tree','-r','--name-only','origin/master','./']) | |
files = r.split(); | |
ignoredPeeps = set(['Laima Tazmin', 'Cara Warner', 'Patty Delgado', 'Matt Anderson', 'r29bot']) | |
nameMap = { | |
'[email protected]': 'Carlo Francisco', | |
'jcfrancisco': 'Carlo Francisco', | |
'Jen': 'Jennifer Calloway', | |
'josipherceg': 'Josip Herceg', | |
'[email protected]': 'Josip Herceg', | |
'Liyan.Tang': 'Liyan Tang', | |
'liyantang': 'Liyan Tang', | |
'[email protected]': 'Patty Delgado', | |
'johnnyshankman': 'Johnny Shankman', | |
'Maggie Love & Noah Lemen': 'Noah Lemen', | |
} | |
for f in files: | |
peeps = subprocess.check_output([ | |
'git', 'log', '--follow', '--pretty=format:%an', '--', f | |
]) | |
# One peep per line | |
peeps = peeps.split('\n') | |
# Some people use multiple accounts. Consolidate to one name | |
peeps = map(lambda x: nameMap.get(x, x), peeps) | |
# Take out duplicates and ignoredPeeps | |
peeps = set(peeps) - ignoredPeeps | |
peeps = list(peeps) | |
peeps.sort() | |
print "{0},{1},{2}".format(f, len(peeps), ','.join(peeps)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment