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

[PATCH v3 00/11] Add new git-cc-cmd helper to contrib

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Apr 19, 2013, 19:30 UTC
Message-ID
<1366399831-5964-1-git-send-email-felipe.contreras@gmail.com>
Hi,

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 patch series.

  % git cc-cmd v1.8.1.6^^1..v1.8.1.6^^2
  "Henrik Grubbström" <grubba@grubba.org> (author: 7%)
  junio (signer: 84%, author: 15%)
  "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com> (author: 30%, signer: 7%)
  "Jean-Noël AVILA" <avila.jn@gmail.com> (author: 7%)
  Jean-Noel Avila <jn.avila@free.fr> (signer: 7%)
  Duy Nguyen <pclouds@gmail.com> (author: 7%)
  Michael Haggerty <mhagger@alum.mit.edu> (author: 15%)
  Clemens Buchacher <drizzd@aon.at> (author: 7%)
  Joshua Jensen <jjensen@workspacewhiz.com> (author: 7%)
  Johannes Sixt <j6t@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 participation.

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 v1.8.1.6^^1..v1.8.1.6^^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
-- 
1.8.2.1.790.g4588561
Next: Felipe Contreras
Message 1 of 17 in “Add new git-cc-cmd helper to contrib”
  1. 00/11 Add new git-cc-cmd helper to contribFelipe Contreras, Apr 19, 2013
  2. 01/11 Add new git-cc-cmd helper to contribFelipe Contreras, Apr 19, 2013
  3. Felipe ContrerasApr 19, 2013
  4. Junio C HamanoApr 19, 2013
  5. 02/11 contrib: cc-cmd: add option parsingFelipe Contreras, Apr 19, 2013
  6. 03/11 contrib: cc-cmd: add support for multiple patchesFelipe Contreras, Apr 19, 2013
  7. 04/11 contrib: cc-cmd: add option to show commitsFelipe Contreras, Apr 19, 2013
  8. 05/11 contrib: cc-cmd: add option to parse from committishFelipe Contreras, Apr 19, 2013
  9. 06/11 contrib: cc-cmd: parse committish like format-patchFelipe Contreras, Apr 19, 2013
  10. 07/11 contrib: cc-cmd: fix parsing of rev-list argsFelipe Contreras, Apr 19, 2013
  11. 08/11 contrib: cc-cmd: add option to fetch aliasesFelipe Contreras, Apr 19, 2013
  12. 09/11 contrib: cc-cmd: support multiple rolesFelipe Contreras, Apr 19, 2013
  13. 10/11 contrib: cc-cmd: sort by participationFelipe Contreras, Apr 19, 2013
  14. 11/11 contrib: cc-cmd: ignore chunks with no original linesFelipe Contreras, Apr 19, 2013
  15. Junio C HamanoApr 19, 2013
  16. Duy NguyenApr 20, 2013
  17. Felipe ContrerasApr 20, 2013

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.