--- /dev/null
+Andy Shevchenko,<andriy.shevchenko@linux.intel.com>
+Arush Sharma,<46960231+arushsharma24@users.noreply.github.com>
+Benno Bielmeier,<32938211+bbenno@users.noreply.github.com>
+Bob Lee,<defru04002@gmail.com>
+Brad Baker,<brad@brdbkr.com>
+Che-Chia Chang,<vivahavey@gmail.com>
+Chih-En Lin,<shiyn.lin@gmail.com>,<0086d026@email.ntou.edu.tw>,<66012716+linD026@users.noreply.github.com>
+Chih-Hsuan Yang,<zxc25077667@gmail.com>
+Chih-Yu Chen,<34228283+chihyu1206@users.noreply.github.com>
+Ching-Hua (Vivian) Lin,<jkrvivian@gmail.com>
+Chin Yik Ming,<yikming2222@gmail.com>
+Cyril Brulebois,<cyril@debamax.com>
+Daniele Paolo Scarpazza,<>
+David Porter,<>
+demonsome,<horseradish1208@gmail.com>
+Dimo Velev,<>
+Ekang Monyet,<ekangmonyet@posteo.net>
+Ethan Chan,<F04066028@gs.ncku.edu.tw>
+fennecJ,<hwahwa649@gmail.com>,<58484289+fennecJ@users.noreply.github.com>
+Francois Audeon,<>
+Gilad Reti,<gilad.reti@gmail.com>
+Horst Schirmeier,<>
+Hsin-Hsiang Peng,<hsinspeng@gmail.com>
+Ignacio Martin,<>
+Iûnn Kiàn-îng,<black.yangcr@gmail.com>
+Jian-Xing Wu,<fdgkhdkgh@gmail.com>
+Johan Calle,<43998967+jcallemc@users.noreply.github.com>
+keytouch,<qsytech@126.com>
+Kohei Otsuka,<13173186+rjhcnf@users.noreply.github.com>
+manbing,<manbing3@gmail.com>
+Marconi Jiang,<marconi1964@yahoo.com>
+mengxinayan,<31788564+mengxinayan@users.noreply.github.com>
+Peter Lin,<peterlin@qilai.dev>,<lyctw.ee@gmail.com>,<peterlin.tw@protonmail.com>
+Roman Lakeev,<>
+Sam Erickson,<samuelerickson977@gmail.com>
+Shao-Tse Hung,<ccs100203@gmail.com>
+Stacy Prowell,<sprowell@gmail.com>
+Steven Lung,<1030steven@gmail.com>
+Tristan Lelong,<tristan.lelong@blunderer.org>
+Tse-Wei Lin,<20110901eric@outlook.com>
+Tucker Polomik,<tucker.polomik@inficon.com>
+Tyler Fanelli,<tfanelli@redhat.com>
+VxTeemo,<tcccvvv123@gmail.com>
+Wei-Lun Tsai,<alan23273850@gmail.com>
+Xatierlike Lee,<xatierlike@gmail.com>
+Yin-Chiuan Chen,<leovincentseles@gmail.com>
+Yi-Wei Lin,<s921975628@gmail.com>
+Ylowy,<69316865+YLowy@users.noreply.github.com>
+Yu-Hsiang Tseng,<asas1asas200@gmail.com>
--- /dev/null
+#!/usr/bin/env bash
+FORMAT="%aN,<%aE>" #Set git output format in "Name,<Email>" //Capital in aN and aE means replace str based on .mailmap
+TARGET=(examples lkmpg.tex) #Target files we want to trace
+DIR=`git rev-parse --show-toplevel` #Get root dir of the repo
+TARGET=("${TARGET[@]/#/$DIR/}") #Concat $DIR BEFORE ALL elements in array TARGET
+
+#The str in each line should be Username,<useremail>
+function gen-raw-list()
+{
+ git log --pretty="$FORMAT" ${TARGET[@]} | sort -u
+}
+
+function parse-list()
+{
+ > Contributors # Clear contributors' list (Overwrite with null)
+ while read -r line; do
+ User=`echo "$line" | awk -F "," '{print $1}'`
+ if [[ `grep -w "$User" Exclude` ]]; then
+ echo "[skip] $User"
+ continue;
+ fi
+ echo "[Add] $User"
+ MainMail=`echo "$line" | awk -F "[<*>]" '{print $2}'`
+ Emails=(`cat $DIR/.mailmap | grep -w "$User" | awk -F "[<*>]" '{print $4}' | sort -u`)
+ for Email in ${Emails[@]}; do
+ if [[ "$Email" != "$MainMail" ]]; then
+ line="$line,<$Email>";
+ fi
+ done
+ echo "$line" >> Contributors
+ done <<< $(gen-raw-list)
+ cat Include >> Contributors
+}
+
+function sort-list()
+{
+ if [[ `git diff Contributors` ]]; then
+ sort -f -o Contributors{,}
+ git add $DIR/scripts/Contributors
+ fi
+}
+
+#For all lines before endline, print "name, % <email>"
+#For endline print "name. % <email>"
+function gen-tex-file()
+{
+ cat Contributors | awk -F "," \
+ ' BEGIN{k=0}{name[k]=$1;email[k++]=$2}
+ END{
+ for(i=0;i<k;i++){
+ name[i]=(i<k-1)?name[i]",":name[i]".";
+ printf("%-30s %% %s\n",name[i],email[i]);
+ }
+ }
+ '
+}
+
+parse-list
+sort-list
+gen-tex-file > $DIR/contrib.tex
\ No newline at end of file