Here goes another try, I made some changes based on comments, and should be
simpler now. Plus a few improvements. The interdiff will be on the patches, but
only the first one changed substantially.
This script allows you to get a list of relevant persons to Cc when sending a
% git cc-cmd v22.214.171.124^^1..v126.96.36.199^^2
"Henrik Grubbström" <gru...@grubba.org> (author: 7%)
junio (signer: 84%, author: 15%)
"Nguyễn Thái Ngọc Duy" <pclo...@gmail.com> (author: 30%, signer: 7%)
"Jean-Noël AVILA" <avila...@gmail.com> (author: 7%)
Jean-Noel Avila <jn.av...@free.fr> (signer: 7%)
Duy Nguyen <pclo...@gmail.com> (author: 7%)
Michael Haggerty <mhag...@alum.mit.edu> (author: 15%)
Clemens Buchacher <dri...@aon.at> (author: 7%)
Joshua Jensen <jjen...@workspacewhiz.com> (author: 7%)
Johannes Sixt <j...@kdbg.org> (signer: 7%)
It find people that might be interesting in a patch, by going back through the
history for each single hunk modified, and finding people that reviewed,
acknowledge, signed, or authored the code the patch is modifying.
It does this by running 'git blame' incrementally on each hunk, and then
parsing the commit message. After gathering all the relevant people, it groups
them to show what exactly was their role when the participated in the
development of the relevant commit, and on how many relevant commits they
participated. They are only displayed if they pass a minimum threshold of
The code finds the changes in each commit in the list, runs 'git blame'
to see which other commits are relevant to those lines, and then adds
the author and signer to the list.
Finally, it calculates what percentage of the total relevant commits
each person was involved in, and if it passes the threshold, it goes in.
You can also choose to show the commits themselves:
% git cc-cmd --commits v188.8.131.52^^1..v184.108.40.206^^2
9db9eec attr: avoid calling find_basename() twice per path
94bc671 Add directory pattern matching to attributes
82dce99 attr: more matching optimizations from .gitignore
593cb88 exclude: split basename matching code into a separate function
b559263 exclude: split pathname matching code into a separate function
4742d13 attr: avoid searching for basename on every match
f950eb9 rename pathspec_prefix() to common_prefix() and move to dir.[ch]
4a085b1 consolidate pathspec_prefix and common_prefix
d932f4e Rename git_checkattr() to git_check_attr()
2d72174 Extract a function collect_all_attrs()
8cf2a84 Add string comparison functions that respect the ignore_case variable.
407a963 Merge branch 'rr/remote-helper-doc'
ec775c4 attr: Expand macros immediately when encountered.
But wait, there's more: you can also specify a list of patch files, which means
this can be used for git send-emails --cc-cmd option.
Felipe Contreras (11):
Add new git-cc-cmd helper to contrib
contrib: cc-cmd: add option parsing
contrib: cc-cmd: add support for multiple patches
contrib: cc-cmd: add option to show commits
contrib: cc-cmd: add option to parse from committish
contrib: cc-cmd: parse committish like format-patch
contrib: cc-cmd: fix parsing of rev-list args
contrib: cc-cmd: add option to fetch aliases
contrib: cc-cmd: support multiple roles
contrib: cc-cmd: sort by participation
contrib: cc-cmd: ignore chunks with no original lines
contrib/cc-cmd/git-cc-cmd | 258 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 258 insertions(+)
create mode 100755 contrib/cc-cmd/git-cc-cmd
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html