Skip to content

Instantly share code, notes, and snippets.

@arikfr
Created August 5, 2018 18:49
Show Gist options
  • Save arikfr/d752520e870d057b1e0f8929005c6fab to your computer and use it in GitHub Desktop.
Save arikfr/d752520e870d057b1e0f8929005c6fab to your computer and use it in GitHub Desktop.
#!/bin/env python
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment