#!/usr/bin/env python import subprocess def print_log(full_log): full_log_lines = full_log.split("\n") commits = [] commit_bit = "commit " author_bit = "Author: " date_bit = "Date: " commit = None for line in full_log_lines: if line[0:len(commit_bit)] == commit_bit: if commit: commits.append(commit) commit = {'text':''} handled = False for bit in [commit_bit, author_bit, date_bit]: if line[0:len(bit)] == bit: commit[bit] = line handled = True if not handled: commit['text'] += line commits.append(commit) contributions = [] for commit in commits: if not "git@kismith.co.uk" in commit[author_bit] and not "git@el-tramo.be" in commit[author_bit]: contributions.append(commit) #print contributions contributors = {} for commit in contributions: if not commit[author_bit] in contributors: contributors[commit[author_bit]] = [] contributors[commit[author_bit]].append(commit[commit_bit]) for contributor in contributors: print contributor + " has contributed patches " + ", ".join([commit[len(commit_bit):] for commit in contributors[contributor]]) full_swiften_log = subprocess.check_output(["git", "log", "--", "Swiften"]) print "Contributors for Swiften/ subtree:\n" print_log(full_swiften_log) full_all_log = subprocess.check_output(["git", "log"]) print "\n\n\n\n" print "Contributors for full tree:\n" print_log(full_all_log)