This tool finds people that might be interested in a patch series, by going back through the history of each single hunk modified, and finding authored the code the patch is modifying.
It does this by running git blame
incrementally on each hunk, and finding the
relevant commits. The relevant commits are counted for each person, and people
are only displayed if they pass a minimum threshold of participation.
For example:
% git related master..topic
Felipe Contreras <felipe.contreras@gmail.com> (25%)
Sverre Rabbelier <srabbelier@gmail.com> (17%)
Elijah Newren <newren@gmail.com> (10%)
Jeff King <peff@peff.net> (10%)
Shawn O. Pearce <spearce@spearce.org> (5%)
Additionally, it’s able to parse commit trailers (e.g. Signed-off-by
,
Reviewed-by
), and group the roles of each person.
For example:
% git related --roles master..topic
Junio C Hamano <gitster@pobox.com> (signer: 90%, author: 5%)
Felipe Contreras <felipe.contreras@gmail.com> (author: 25%, reviewer: 2%)
Sverre Rabbelier <srabbelier@gmail.com> (author: 17%, acker: 2%, signer: 7%)
Jeff King <peff@peff.net> (acker: 17%, author: 10%)
Shawn O. Pearce <spearce@spearce.org> (author: 5%, signer: 2%, observer: 2%)
Elijah Newren <newren@gmail.com> (author: 10%)
Moreover, it has an option to output the list of commits, instead of the contributors, which allows you to easily find out the previous changes to the lines your patches modify.
% git related --commits master..topic
99d9ec0 Merge branch 'fc/transport-helper-no-refspec'
67c9c78 transport-helper: barf when user tries old:new
0460ed2 documentation: trivial style cleanups
126aac5 transport-helper: fix remote helper namespace regression
21610d8 transport-helper: clarify pushing without refspecs
a93b4a0 transport-helper: warn when refspec is not used
664059f transport-helper: update remote helper namespace
c4458ec fast-export: Allow pruned-references in mark file
...
Plus, when sending patches for review, you can configure git send-email
to use git related
to find relevant people that should be cc’ed:
% git send-email --cc-cmd='git related' *.patch
A very similar tool but it gathers all commits, not just the ones related to a branch.
You can specify a file, directory, or pathspec, just like with git log
.
If nothing is specified, it lists all the people that have had a role in the whole tree.
% git who -- lib/