Re: about get_maintainer.pl not showing the original author of the modified code

From: Joe Perches
Date: Wed Mar 02 2016 - 22:32:38 EST


On Thu, 2016-03-03 at 11:00 +0800, Jianyu Zhan wrote:
> Hi, Joe,
>
> recently in this patch https://lkml.org/lkml/2016/3/2/281,
>
> I found the original author of the modified code was not
> suggested as a patch reviewer.
>
> This surprised me at first.  But later I realized that it is not trivial
> to define "original author", since the last modification might be
> just code polishing.  To dig out the original author, we might need
> go up the commit history and git must be equipped with ability of pattern
> recognization to analyze code.
>
> What do you think?

There are many options to the get_maintainer script.
You can see all of them with "./scripts/get_maintainer.pl --help"

Many are not enabled because run-time can be very long as
running various git commands can take awhile to complete.

$ ./scripts/get_maintainer.pl --git-blame <patch|-f <file>>

with your patch get_maintainer.pl and --git-blame gives:

$ ./scripts/get_maintainer.pl ~/1.diff --git-blame
Thomas Gleixner <tglx@xxxxxxxxxxxxx> (commit_signer:20/19=100%,authored:7/19=37%,added_lines:73/248=29%,removed_lines:38/119=32%)
Peter Zijlstra <peterz@xxxxxxxxxxxxx> (commit_signer:3/19=16%,authored:1/19=5%)
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> (commit_signer:3/19=16%,modified commits:2/3=67%)
Davidlohr Bueso <dave@xxxxxxxxxxxx> (commit_signer:3/19=16%,authored:3/19=16%,added_lines:113/248=46%,removed_lines:20/119=17%)
Ingo Molnar <mingo@xxxxxxxxxx> (commit_signer:2/19=11%,modified commits:2/3=67%)
Dominik Dingel <dingel@xxxxxxxxxxxxxxxxxx> (authored:1/19=5%)
Jann Horn <jann@xxxxxxxxx> (authored:1/19=5%)
Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> (added_lines:29/248=12%)
"Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx> (added_lines:14/248=6%,removed_lines:49/119=41%)
Darren Hart <dvhart@xxxxxxxxxxxxxxx> (modified commits:1/3=33%)
Stephen Hemminger <shemminger@xxxxxxxxxxxxxxxxxxxx> (modified commits:1/3=33%)
Christian Borntraeger <borntrae@xxxxxxxxxx> (modified commits:1/3=33%)
linux-kernel@xxxxxxxxxxxxxxx (open list)

vs

$ ./scripts/get_maintainer.pl ~/1.diff
Thomas Gleixner <tglx@xxxxxxxxxxxxx> (commit_signer:20/19=100%,authored:7/19=37%,added_lines:73/248=29%,removed_lines:38/119=32%)
Davidlohr Bueso <dave@xxxxxxxxxxxx> (commit_signer:3/19=16%,authored:3/19=16%,added_lines:113/248=46%,removed_lines:20/119=17%)
Peter Zijlstra <peterz@xxxxxxxxxxxxx> (commit_signer:3/19=16%)
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> (commit_signer:3/19=16%)
Ingo Molnar <mingo@xxxxxxxxxx> (commit_signer:2/19=11%)
Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> (authored:1/19=5%)
Darren Hart <dvhart@xxxxxxxxxxxxxxx> (authored:1/19=5%)
kbuild test robot <fengguang.wu@xxxxxxxxx> (authored:1/19=5%)
Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> (added_lines:29/248=12%)
"Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx> (added_lines:14/248=6%,removed_lines:49/119=41%)

running git blame alone gives:

$ git blame -L1927,+8 kernel/futex.c
^1da177e (Linus Torvalds        2005-04-16 15:20:36 -0700 1927) 
^1da177e (Linus Torvalds        2005-04-16 15:20:36 -0700 1928)         /* In the common case we don't take the spinlock, which is nice. */
42d35d48 (Darren Hart           2008-12-29 15:49:53 -0800 1929) retry:
^1da177e (Linus Torvalds        2005-04-16 15:20:36 -0700 1930)         lock_ptr = q->lock_ptr;
e91467ec (Christian Borntraeger 2006-08-05 12:13:52 -0700 1931)         barrier();
c80544dc (Stephen Hemminger     2007-10-18 03:07:05 -0700 1932)         if (lock_ptr != NULL) {
^1da177e (Linus Torvalds        2005-04-16 15:20:36 -0700 1933)                 spin_lock(lock_ptr);
^1da177e (Linus Torvalds        2005-04-16 15:20:36 -0700 1934)                 /*

with whitespace ignored, it gives:

$ git blame -w -L1927,+8 kernel/futex.c 
^1da177e (Linus Torvalds        2005-04-16 15:20:36 -0700 1927) 
^1da177e (Linus Torvalds        2005-04-16 15:20:36 -0700 1928)         /* In the common case we don't take the spinlock, which is nice. */
^1da177e (Linus Torvalds        2005-04-16 15:20:36 -0700 1929) retry:
^1da177e (Linus Torvalds        2005-04-16 15:20:36 -0700 1930)         lock_ptr = q->lock_ptr;
e91467ec (Christian Borntraeger 2006-08-05 12:13:52 -0700 1931)         barrier();
c80544dc (Stephen Hemminger     2007-10-18 03:07:05 -0700 1932)         if (lock_ptr != NULL) {
^1da177e (Linus Torvalds        2005-04-16 15:20:36 -0700 1933)                 spin_lock(lock_ptr);
^1da177e (Linus Torvalds        2005-04-16 15:20:36 -0700 1934)                 /*

so there's an argument that get_maintainer.pl should by default
ignore whitespace changes.