#
# This is the email aliases file, mapping secondary addresses onto a
# single, canonical address. It duplicates some info from .mailmap so
# if you are adding something here also consider if the .mailmap needs
# updating.
#
# If you just want to avoid gitdm complaining about author fields
# which are actually email addresses with the message:
#
#   "...is an author name, probably not what you want"
#
# you can just apply --use-mailmap to you git-log command, e.g:
#
#   git log --use-mailmap --numstat --since "last 2 years" | $GITDM
#
# however that will have the effect of squashing multiple addresses to
# a canonical address which will distort the stats of those who
# contribute in both personal and professional capacities from
# different addresses.
#

# weird commits
balrog@c046a42c-6fe2-441c-8c8c-71466251a162 balrogg@gmail.com
aliguori@c046a42c-6fe2-441c-8c8c-71466251a162 anthony@codemonkey.ws
aurel32@c046a42c-6fe2-441c-8c8c-71466251a162 aurelien@aurel32.net
blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162 blauwirbel@gmail.com
edgar_igl@c046a42c-6fe2-441c-8c8c-71466251a162 edgar.iglesias@gmail.com
bellard@c046a42c-6fe2-441c-8c8c-71466251a162 fabrice@bellard.org
j_mayer@c046a42c-6fe2-441c-8c8c-71466251a162 l_indien@magic.fr
pbrook@c046a42c-6fe2-441c-8c8c-71466251a162 paul@codesourcery.com
ths@c046a42c-6fe2-441c-8c8c-71466251a162 ths@networkno.de
malc@c046a42c-6fe2-441c-8c8c-71466251a162 av1474@comtv.ru

# There is also a:
#    (no author) <(no author)@c046a42c-6fe2-441c-8c8c-71466251a162>
# for the cvs2svn initialization commit e63c3dc74bf.

# Next, translate a few commits where mailman rewrote the From: line due
# to strict SPF, although we prefer to avoid adding more entries like that.
"Ed Swierk via Qemu-devel" eswierk@skyportsystems.com
"Ian McKellar via Qemu-devel" ianloic@google.com
"Julia Suvorova via Qemu-devel" jusual@mail.ru
"Justin Terry (VM) via Qemu-devel" juterry@microsoft.com
