[tor-commits] [policies/master] Note commits-per-repo for individuals

atagar at torproject.org atagar at torproject.org
Sun Oct 1 23:47:55 UTC 2017


commit 3b7f94be004ded3e17516835daf3fa3a280b493e
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Oct 1 16:46:54 2017 -0700

    Note commits-per-repo for individuals
    
    Neat to include the repo count for individuals so we can tell where hotspots
    are...
    
      Nick Mathewson (nickm at torproject.org): 1666
        1580 tor, 78 torspec, 4 chutney, 3 trunnel, 1 fuzzing-corpora
      Bisaloo (Bisaloo at users.noreply.github.com): 710
        710 https-everywhere
      ...
---
 scripts/commit_activity.py | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/scripts/commit_activity.py b/scripts/commit_activity.py
index eeb5e02..ce57ee9 100644
--- a/scripts/commit_activity.py
+++ b/scripts/commit_activity.py
@@ -106,12 +106,16 @@ def call(cmd, cwd = None):
     return stdout.strip()
 
 
-def print_results(title, authors):
+def print_results(title, authors, repo_commits_per_user = None):
   print('%s:\n' % title)
 
   if authors:
     for author, count in sorted(collections.Counter(authors).items(), key = lambda entry: entry[1], reverse = True):
       print('  %s: %s' % (author, count))
+
+      if repo_commits_per_user:
+        repo_counts = ['%s %s' % (c, r) for (r, c) in sorted(repo_commits_per_user.get(author, {}).items(), key = lambda e: e[1], reverse = True)]
+        print('    %s' % ', '.join(repo_counts))
   else:
     print('  no activity')
 
@@ -121,7 +125,9 @@ def print_results(title, authors):
 if not os.path.exists(TMP_DIR):
   os.mkdir(TMP_DIR)
 
+inactive_repos = []
 all_author_emails = []
+repo_commits_per_user = {}  # mapping of {user => {repo => count}}
 
 for name, repo in sorted(GIT_REPOS.items(), key = lambda entry: entry[0]):
   repo_path = os.path.join(TMP_DIR, name)
@@ -135,6 +141,18 @@ for name, repo in sorted(GIT_REPOS.items(), key = lambda entry: entry[0]):
   print_results(name, author_emails)
   all_author_emails += author_emails
 
+  for author, count in collections.Counter(author_emails).items():
+    repo_commits_per_user.setdefault(author, {})[name] = count
+
+  if not author_emails:
+    inactive_repos.append(name)
+
+print('Inactive repositories:\n')
+
+for repo in inactive_repos:
+  print(' * %s' % repo)
+
+print('')
 
-print_results('Total commit counts', all_author_emails)
+print_results('Total commit counts', all_author_emails, repo_commits_per_user)
 



More information about the tor-commits mailing list