#!/bin/env python3 import sys import re import subprocess def get_change_log(previous_sha): args = ['git', '--no-pager', 'log', '--merges', '--grep', 'Merge pull request', '--pretty=format:"%h|%s|%b|%p"', 'master...{}'.format(previous_sha)] log = subprocess.check_output(args) changes = [] for line in log.split('\n'): try: sha, subject, body, parents = line[1:-1].split('|') except ValueError: continue try: pull_request = re.match("Merge pull request #(\d+)", subject).groups()[0] pull_request = " #{}".format(pull_request) except Exception as ex: pull_request = "" author = subprocess.check_output(['git', 'log', '-1', '--pretty=format:"%an"', parents.split(' ')[-1]])[1:-1] changes.append("{}{}: {} ({})".format(sha, pull_request, body.strip(), author)) return changes if __name__ == '__main__': previous_sha = sys.argv[1] changes = get_change_log(previous_sha) for change in changes: print(change)