annotate scripts/shortlog.py @ 8297:2fa9f497faac

repos: separate repo creation from form validation The broad catching of Exception in the repo creation controller is conceptually bad. It also caused misleading "Error creating repository None" when form validation failed with anything but formencode.Invalid . For now, just constrain the broad exception handling to only cover repo creation. It is a bug if form validation fails in unexpected ways, and we want it reported as a crash that we can fix.
author Mads Kiilerich <mads@kiilerich.com>
date Tue, 17 Mar 2020 17:15:59 +0100
parents aa6f17a53b49
children 96b43734025f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8173
aa6f17a53b49 py3: switch to use Python 3 interpreter, temporarily leaving many things very broken until they have been migrated/fixed in a reviewable way
Mads Kiilerich <mads@kiilerich.com>
parents: 8161
diff changeset
1 #!/usr/bin/env python3
7586
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
3
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
4 """
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
5 Kallithea script for generating a quick overview of contributors and their
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
6 commit counts in a given revision set.
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
7 """
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
8 import argparse
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
9 import os
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
10 from collections import Counter
7811
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7586
diff changeset
11
8161
2786730e56e0 scripts: use explicit relative imports of contributor_data
Mads Kiilerich <mads@kiilerich.com>
parents: 7811
diff changeset
12 from . import contributor_data
7586
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
13
7811
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7586
diff changeset
14
7586
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
15 def main():
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
16
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
17 parser = argparse.ArgumentParser(description='Generate a list of committers and commit counts.')
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
18 parser.add_argument('revset',
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
19 help='revision set specifying the commits to count')
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
20 args = parser.parse_args()
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
21
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
22 repo_entries = [
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
23 (contributor_data.name_fixes.get(name) or contributor_data.name_fixes.get(name.rsplit('<', 1)[0].strip()) or name).rsplit('<', 1)[0].strip()
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
24 for name in (line.strip()
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
25 for line in os.popen("""hg log -r '%s' -T '{author}\n'""" % args.revset).readlines())
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
26 ]
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
27
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
28 counter = Counter(repo_entries)
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
29 for name, count in counter.most_common():
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
30 if name == '':
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
31 continue
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
32 print('%4s %s' % (count, name))
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
33
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
34
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
35 if __name__ == '__main__':
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
36 main()