git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Check out git-author

From
Xxmeng <xmeng@cs.wisc.edu>
Date
Sep 7, 2014, 23:05 UTC
Message-ID
<0a3b0f232ec56517d4db43c6bd6ebb63@cs.wisc.edu>
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
Next: Jeff King
Message 1 of 3 in “Check out git-author”
  1. xmengSep 7, 2014
  2. Jeff KingSep 8, 2014
  3. Torsten BögershausenSep 8, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.