0

handle all types of aliases for the contributor list

If a contributor email is already in the list we won't create a new
entry. However, if the name is different than in the list, we print a
message if an alias is missing in .mailmap

If an email is not in the list, but the name is in the list this could
mean two things:

 1. Two different persons have the same name.
    This is possible, but less likely than 2.
 2. A contributor used another mail.
    This is likely the case and we don't make a new entry,
    but print a message.
This commit is contained in:
Johannes Dewender
2012-04-19 16:58:11 +02:00
parent 1a26af6ebb
commit 3f93dc4b6d
2 changed files with 40 additions and 9 deletions

View File

@@ -1,2 +1,5 @@
Andrew Brown <brownan@gmail.com> <andrew@fry.(none)>
Alex Headley <aheadley@waysaboutstuff.com> <aheadley@nexcess.net>
Alex Headley <aheadley@waysaboutstuff.com> aheadley
Michael Fallows <michael@fallo.ws> redorkulated
Maciej Malecki <maciej.malecki@hotmail.com> Maciej Małecki

View File

@@ -35,22 +35,50 @@ def main():
'name': line.split()[1:-1],
'email': line.split()[-1]
})
# We don't access the name of old/listed contributors at all
# but that might change.
# So we parse it anyways and strip it off again.
old = map(lambda x: (x['name'], x['email']), old_contributors)
old_emails = map(lambda x: x['email'], old_contributors)
old_names = map(lambda x: x['name'], old_contributors)
# check which contributors are new
new_contributors = []
update_mailmap = False
for contributor in contributors:
if contributor["email"] not in old_emails:
if (contributor['name'], contributor['email']) in old:
# this exact combination already in the list
pass
elif (contributor['email'] not in old_emails
and contributor['name'] not in old_names):
# name AND email are not in the list
new_contributors.append(contributor)
elif contributor['email'] in old_emails:
# email is listed, but with another name
old_name = filter(lambda x: x['email'] == contributor['email'],
old_contributors)[0]['name']
print "new alias %s for %s %s ?" % (
" ".join(contributor['name']),
" ".join(old_name),
contributor['email'])
update_mailmap = True
elif contributor['name'] in old_names:
# probably a new email for a previous contributor
other_mail = filter(lambda x: x['name'] == contributor['name'],
old_contributors)[0]['email']
print "new email %s for %s %s ?" % (
contributor['email'],
" ".join(contributor['name']),
other_mail)
update_mailmap = True
if update_mailmap:
print "Please update .mailmap"
# sort on the last word of the name
new_contributors = sorted(new_contributors,
key=lambda x: x['name'][-1].lower())
# show new contributors to be merged to the list
if new_contributors:
print "inserting:"
for contributor in new_contributors:
print format_contributor(contributor)