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' *.patchA 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/