# --------------------------------------------------------------------------
# maps log commit email addresses to user names so that they properly report
# for release notes with: git shortlog -sn
# --------------------------------------------------------------------------
Stephen Mallette                 <spmallette@users.noreply.github.com>
Stephen Mallette                 <spmallette@gmail.com>
Stephen Mallette                 <spmva@genoprime.com>
Stephen Mallette                 <spmva@genprime.com>
Florian Hockmann                 <fh@florian-hockmann.de>
Jason Plurad                     <pluradj@us.ibm.com>
Otavio Santana                   <otaviopolianasantana@gmail.com>
Harsh Thakkar                    <harsh9t@gmail.com>
HadoopMarc                       <vtslab@xs4all.nl>
Bryn Cooke                       <bryncooke@gmail.com>
Marko A. Rodriguez               <okram@apache.org>
Bob Briody                       <bob@thinkaurelius.com>
Bob Briody                       <bob.briody@datastax.com>
Matt Frantz                      <mfrantz@redsealnetworks.com>

