# HG changeset patch # User Thomas De Schampheleire # Date 2019-03-15 20:25:49 # Node ID 30e3d0a14f09295368cb08ba4ecef0cc4ff0ce14 # Parent dc1c9c1314667d48a9293047603a6072bf3e8a42 scripts/shortlog: new script Useful for release announcements, shortlog.py presents a list of committers corresponding to the specified revision set, along with their count of commits in that set. Example usage: scripts/shortlog.py "only('.', branch('stable') & tagged() & public() & not '.')" diff --git a/scripts/shortlog.py b/scripts/shortlog.py new file mode 100755 --- /dev/null +++ b/scripts/shortlog.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- + +""" +Kallithea script for generating a quick overview of contributors and their +commit counts in a given revision set. +""" +import argparse +import os +from collections import Counter +import contributor_data + +def main(): + + parser = argparse.ArgumentParser(description='Generate a list of committers and commit counts.') + parser.add_argument('revset', + help='revision set specifying the commits to count') + args = parser.parse_args() + + repo_entries = [ + (contributor_data.name_fixes.get(name) or contributor_data.name_fixes.get(name.rsplit('<', 1)[0].strip()) or name).rsplit('<', 1)[0].strip() + for name in (line.strip() + for line in os.popen("""hg log -r '%s' -T '{author}\n'""" % args.revset).readlines()) + ] + + counter = Counter(repo_entries) + for name, count in counter.most_common(): + if name == '': + continue + print('%4s %s' % (count, name)) + + +if __name__ == '__main__': + main()