Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- class Commits:
- def __init__(self, hash, message, additions, deletions, insert_order):
- self.hash = hash
- self.message = message
- self.additions = additions
- self.deletions = deletions
- self.insert_order = insert_order
- pattern = re.compile(r"^https://github\.com/(?P<name>[A-Za-z\d\-]+)/"
- r"(?P<repo>[A-Za-z_\-]+)/commit/(?P<hash>[A-Fa-f\d]{40}),(?P<message>.+),"
- r"(?P<additions>\d+),(?P<deletions>\d+)$")
- commits = {}
- insert_order = 0
- while True:
- line = input()
- if line == "git push":
- break
- match = re.fullmatch(pattern, line)
- if not match:
- continue
- user = match.group(1)
- repo = match.group(2)
- hash = match.group(3)
- message = match.group(4)
- additions = int(match.group(5))
- deletions = int(match.group(6))
- if user not in commits:
- commits[user] = {}
- if repo not in commits[user]:
- commits[user][repo] = []
- insert_order += 1
- commit = Commits(hash, message, additions, deletions, insert_order)
- commits[user][repo].append(commit)
- sorted_users = dict(sorted(commits.items(), key=lambda x: x[0])) # change
- for user in sorted_users:
- print(f"{user}:")
- sorted_repos = dict(sorted(sorted_users[user].items(), key=lambda x: x[0])) # change
- for repo in sorted_repos:
- total_additions = 0 # change
- total_deletions = 0 # change
- print(f" {repo}:")
- sorted_commits = sorted(sorted_repos[repo], key=lambda c: c.insert_order)
- for commit in sorted_repos[repo]:
- print(
- f" commit {commit.hash}: {commit.message} ({commit.additions} additions, {commit.deletions} deletions)")
- total_additions += commit.additions
- total_deletions += commit.deletions
- print(f" Total: {total_additions} additions, {total_deletions} deletions") # change
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement