git-related
git-related copied to clipboard
Find related people and commits on a set of changes
== git-related ==
This tool finds people that might be interested in a patch, by going back through the history for each single hunk modified, and finding people that reviewed, acknowledged, signed, or authored the code the patch is modifying.
It does this by running git blame incrementally on each hunk, and
finding the relevant commit message. After gathering all the relevant
people, it groups them to show what exactly was their role when they
participated in the development of the relevant commit, and on how many
relevant commits they participated in. They are only displayed if they pass
a minimum threshold of participation.
For example:
% git related --roles master..fc/transport/improv Junio C Hamano [email protected] (signer: 90%, author: 5%) Felipe Contreras [email protected] (author: 25%, reviewer: 2%) Sverre Rabbelier [email protected] (author: 17%, acker: 2%, signer: 7%) Jeff King [email protected] (acker: 17%, author: 10%) Shawn O. Pearce [email protected] (author: 5%, signer: 2%, observer: 2%) Elijah Newren [email protected] (author: 10%)
In addition, 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..fc/transport/improv 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 ...
Moreover, 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
== git-who ==
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/
== Installation ==
Install the parseopt gem:
gem install parseopt
Then simply copy the script anywhere in your $PATH and make it
executable, or run make install which will install it by default to
your ~/bin/ directory (make sure it's in your $PATH).