2 changed files with 70 additions and 1 deletions
@ -0,0 +1,49 @@ |
|||||
|
import datetime |
||||
|
import re |
||||
|
import sys |
||||
|
import git |
||||
|
|
||||
|
URL = 'https://github.com/miguelgrinberg/python-socketio' |
||||
|
merges = {} |
||||
|
|
||||
|
|
||||
|
def format_message(commit): |
||||
|
if commit.message.startswith('Version '): |
||||
|
return '' |
||||
|
if '#nolog' in commit.message: |
||||
|
return '' |
||||
|
if commit.message.startswith('Merge pull request'): |
||||
|
pr = commit.message.split('#')[1].split(' ')[0] |
||||
|
message = ' '.join([line for line in [line.strip() for line in commit.message.split('\n')[1:]] if line]) |
||||
|
merges[message] = pr |
||||
|
return '' |
||||
|
if commit.message.startswith('Release '): |
||||
|
return '\n**{message}** - {date}\n'.format( |
||||
|
message=commit.message.strip(), |
||||
|
date=datetime.datetime.fromtimestamp(commit.committed_date).strftime('%Y-%m-%d')) |
||||
|
message = ' '.join([line for line in [line.strip() for line in commit.message.split('\n')] if line]) |
||||
|
if message in merges: |
||||
|
message += ' #' + merges[message] |
||||
|
message = re.sub('\\(.*(#[0-9]+)\\)', '\\1', message) |
||||
|
message = re.sub('Fixes (#[0-9]+)', '\\1', message) |
||||
|
message = re.sub('fixes (#[0-9]+)', '\\1', message) |
||||
|
message = re.sub('#([0-9]+)', '[#\\1]({url}/issues/\\1)'.format(url=URL), message) |
||||
|
message += ' ([commit]({url}/commit/{sha}))'.format(url=URL, sha=str(commit)) |
||||
|
if commit.author.name != 'Miguel Grinberg': |
||||
|
message += ' (thanks **{name}**!)'.format(name=commit.author.name) |
||||
|
return '- ' + message |
||||
|
|
||||
|
|
||||
|
def main(all=False): |
||||
|
repo = git.Repo() |
||||
|
|
||||
|
for commit in repo.iter_commits(): |
||||
|
if not all and commit.message.startswith('Release '): |
||||
|
break |
||||
|
message = format_message(commit) |
||||
|
if message: |
||||
|
print(message) |
||||
|
|
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
main(all=len(sys.argv) > 1 and sys.argv[1] == 'all') |
Loading…
Reference in new issue