GIT-CONTACTS(1)
π GIT-CONTACTS(1) π
okay so bestie, welcome to git-contacts β it's a lil Git manual page, part of the Git Manual fam, and it's literally here to help you figure out who might be interested in a set of changes. that's the whole vibe. π«Ά
β¨ NAME β¨
git-contacts β list people who might be interested in a set of changes π
πΈ SYNOPSIS πΈ
git contacts (<patch>|<range>|<rev>)...
π DESCRIPTION π
So here's the tea, bestie: you hand this command a set of changes β could be patch files, could be revisions β and it goes and determines the people who might be interested in those changes. Iconic, right?
How does it do it? Not me explaining... okay so it consults the history of each patch or revision hunk, and it finds people who get mentioned by commits that touched the lines of the files you're looking at. detective behaviour fr fr π
Your input is one or more patch files or revision arguments. And listen, a revision argument can be a range, or it can be a single <rev> β and when it's a single one, it's interpreted as <rev>..HEAD, so basically the same revision arguments that git-format-patch(1) accepts. Slay. You can even mix patch files AND revision arguments in the same invocation, no cap. π¦
Why would you even want this? Two reasons, bestie:
- Figuring out the list of people you should discuss proposed changes with.
- Finding the list of recipients to
Cc:when you're submitting a patch series viagit send-email.
And for that second one? chef's kiss β git contacts can be used as the argument to git send-email's --cc-cmd option. periodt. π
π§ DISCUSSION π§
git blame gets invoked for each hunk in a patch file or revision. For every commit that git blame mentions, the commit message gets consulted to find people who authored, reviewed, signed, acknowledged, or were Cc:'d. π
Once the list of participants is known, each person's relevance gets computed by considering how many commits mentioned that person compared with the total number of commits under consideration. math girlies rise up π
And the final output? Only the participants who exceed a minimum threshold of participation. sorry to the low-participation girlies, you're not making the cut this time π
π OUTPUT π
For each person of interest, a single line is output, terminated by a newline. β¨
- If the person's name is known,
Name <user@host>is printed. - Otherwise, only
<user@host>is printed.
π₯ EXAMPLES π₯
- Consult patch files:
$ git contacts feature/*.patch
- Revision range:
$ git contacts R1..R2
- From a single revision to HEAD:
$ git contacts origin
- Helper for
git send-email:
$ git send-email --cc-cmd='git contacts' feature/*.patch
π LIMITATIONS π
ngl bestie, several conditions controlling a person's significance are currently hard-coded. like, you can't change them. they are what they are. π
Here's the exact list:
- minimum participation level: 10%
- blame date-limiting: 5 years
-Clevel for detecting moved and copied lines: a single-C
In the future, these conditions may become configurable. so... watch this space, i guess? π
π GIT π
Part of the git(1) suite. obviously. where else would it live π
and that's the whole page, bestie!! π this was Git 2.56.0, dated 09/28/2026 β mwah, love u, go Cc the right people πβ¨π¦
π¦ where this page comes from
- fedora 43: git 2.56.0-1.fc43 Β· BSD-3-Clause AND GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT
- fedora 44: git 2.56.0-1.fc44 Β· BSD-3-Clause AND GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms