Mercurial > p > roundup > code
diff scripts/contributors.py @ 4822:e162fb7353df
contributors.py: Add script to find out contributors
| author | anatoly techtonik <techtonik@gmail.com> |
|---|---|
| date | Sun, 25 Aug 2013 11:35:10 +0300 |
| parents | |
| children | dfef44485418 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/contributors.py Sun Aug 25 11:35:10 2013 +0300 @@ -0,0 +1,63 @@ +""" +Get Mercurial history data and output list of contributors with years. + +Public domain work by: + + anatoly techtonik <techtonik@gmail.com> + +""" + +from subprocess import check_output + +# --- output settings +contributors_by_year = True +years_for_contributors = True +verbose = True +# /-- + + +if verbose: + print("Getting HG log...") +authorship = check_output('hg log --template "{date(date,\\"%Y\\")},{author}\n"') +# authorship are strings like +# 2003,Richard Jones <richard@users.sourceforge.net> +# ... + +if verbose: + print("Splitting...") +# transform to a list of tuples +authorship = [line.split(',', 1) for line in authorship.splitlines()] + +if verbose: + print("Sorting...") +years = {} # year -> set(author1, author2, ...) +names = {} # author -> set(years) +for year,author in authorship: + # years + if not year in years: + years[year] = set() + years[year].add(author) + # names + if not author in names: + names[author] = set() + names[author].add(int(year)) + + +if contributors_by_year: + if verbose: + print("Contributors by year...") + print('') + for year in sorted(years, reverse=True): + print(year) + for author in sorted(years[year]): + print(" " + author) + print('') + +if years_for_contributors: + if verbose: + print("Years for each contributor...") + print('') + for author in sorted(names): + years = sorted(names[author]) + print(years, author) + print('')
