Hi all,
I have been using git-blame to track who changed a line of code or who
to blame for a line of code. It is easy to use. For example, for this
particular line of code:
$ git blame -L 2235,2235 fs/ext4/mballoc.c
85556c9a (Wei Yongjun 2012-09-26 20:43:37 -0400 2235)
meta_group_info[i] = kmem_cache_zalloc(cachep, GFP_KERNEL);
The problem with git-blame is that it only reports the last
author/commit that changed the line, regardless of the magnitude of the
change. Sometimes, the last author may only change a tiny part of the
code and should not be blamed. I developed a built-in tool called
"git-author" to address this problem. Git-author is designed to track
the complete development history of a line. For the same line of code:
$ git author -c -L 2235,2235 fs/ext4/mballoc.c
CURRENT LINE 2235: meta_group_info[i] =
kmem_cache_zalloc(cachep, GFP_KERNEL);
85556c9 Wei Yongjun : meta_group_info[i] =
kmem_cache_zalloc(cachep, GFP_KERNEL);
fb1813f Curt Wohlgemuth : meta_group_info[i] =
kmem_cache_alloc(cachep, GFP_KERNEL);
5f21b0e Frederic Bohe : meta_group_info[i] = kzalloc(len,
GFP_KERNEL);
c9de560 Alex Tomas : meta_group_info[j] =
kzalloc(len, GFP_KERNEL);
Git-author shows the complete development history of this line code. We
can see "Wei Yongjun" only changed the line to call a different function
(from "kmem_cache_alloc" to "kmem_cache_zalloc"). "Wei yongjun" is not
responsible for the other part of the line. "Curt Wohlgemuth" changed
the line to call a different function (from "kzalloc" to
"kmem_cache_alloc") and to use a different parameter (from "len" to
"cachep") and "Frederic Bohe" changed the line to use a different array
index (from "i" to "j").
Git-author should be useful to people who wants to see the complete
history of lines of code.
If you are interested in git-author, you can check it out at
https://github.com/mxz297/git/tree/git-author (please check out branch
'git-author'). Also we have a paper describing more technical details
about git-author in ICSM 2013
(ftp://ftp.cs.wisc.edu/paradyn/papers/Meng13Authorship.pdf).
Let me know if you have any question, feedback, bug about git-author!
Thanks
--Xiaozhu
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html