With emails (Unix only)

1
2
3
4
5
6
7
➜  dev1 git:(miro-ui) ✗ git log --raw | grep "^Author: " | sort | uniq -c
 
      9 Author: Brendan Smith <Brendan.Smith@thinkwrap.com>
     22 Author: Kai Cheng <kai.cheng@thinkwrap.com>
     97 Author: Miro Adamy <miro.adamy@thinkwrap.com>
     49 Author: Training VM <training-vm@thinkwrap.com>
     24 Author: Your Name <your.name@thinkwrap.com>

Pure git

1
2
3
4
5
6
7
➜  dev1 git:(miro-ui) ✗ git shortlog -sen
  
    97  Miro Adamy <miro.adamy@thinkwrap.com>
    49  Training VM <training-vm@thinkwrap.com>
    24  Your Name <your.name@thinkwrap.com>
    22  Kai Cheng <kai.cheng@thinkwrap.com>
     9  Brendan Smith <Brendan.Smith@thinkwrap.com>

Mailmap option to consolidate the variety of authors

Before (no mailmap)

1
2
3
4
5
6
7
8
...
 609  milos hanzel <milos.hanzel@thinkwrap.com>
 361  brant maahs <brant.maahs@thinkwrap.com>
  69  Sullivan Tseng <sullivantseng@gmail.com>
  42  sullivan tseng <sullivan.tseng@thinkwrap.com>
  17  milos.hanzel <milos.hanzel@thinkwrap.com>
   2  Miro Adamy <miro.adamy@thinkwrap.com>
...

Generating the mailman start

➜ pal git:(master) ✗ git shortlog -se | awk -F’\t’ ‘{print $2,$3,$2,$3}’ | sort > .mailmap

After mailmap

Output with .mailmap file

1
2
3
4
5
6
➜  pal git:(master) ✗ git shortlog -sen
  
   626  Milos Hanzel <milos.hanzel@thinkwrap.com>
   361  Brant Maahs <brant.maahs@thinkwrap.com>
   111  Sullivan Tseng <sullivan.tseng@thinkwrap.com>
     2  Miro Adamy <miro.adamy@thinkwrap.com>

The .mailmap file

1
2
3
4
5
6
Miro Adamy <miro.adamy@thinkwrap.com>  Miro Adamy <miro.adamy@thinkwrap.com>
Sullivan Tseng <sullivan.tseng@thinkwrap.com>  sullivan tseng <sullivan.tseng@thinkwrap.com>
Sullivan Tseng <sullivan.tseng@thinkwrap.com>  sullivan tseng <sullivantseng@gmail.com>
Brant Maahs <brant.maahs@thinkwrap.com>  brant maahs <brant.maahs@thinkwrap.com>
Milos Hanzel <milos.hanzel@thinkwrap.com>  milos hanzel <milos.hanzel@thinkwrap.com>
Milos Hanzel <milos.hanzel@thinkwrap.com>  milos.hanzel <milos.hanzel@thinkwrap.com>