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

Re: [PATCH 0/3] some documentation changes from the beginning of the alphabet

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Sep 21, 2018, 05:18 UTC
Message-ID
<CAPig+cR04cjf-D_hUgKhOSUAhHd8py7BM4-HOyE3VttV_ufXFQ@mail.gmail.com>
In-Reply-To
<xmqqzhwd2jcq.fsf@gitster-ct.c.googlers.com>
On Wed, Sep 19, 2018 at 6:49 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 14 quoted lines
> Frederick Eaton <frederik@ofb.net> writes:
> > By the way for some reason git-contacts shows more names when I run it
> > on the patch hash than when I give it the patch name:
> >
> > $ ./contrib/contacts/git-contacts 222580cb60ee64f7b81fed64ec8fbfc81952557f
> > Sébastien Guimmara <sebastien.guimmara@gmail.com>
> > Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> > Eric Sunshine <sunshine@sunshineco.com>
> > Junio C Hamano <gitster@pobox.com>
> > $ ./contrib/contacts/git-contacts ./outgoing/0002-git-column.1-clarify-initial-description-provide-exa.patch
> > Junio C Hamano <gitster@pobox.com>
>
> I've never trusted what git-contacts say, but the latter one
> certainly looks strange [...]

I don't use git-contacts, but the first invocation isn't consulting just a single commit but rather a range of commits. From git-contacts documentation:

    Input consists of one or more patch files or revision arguments.
    A revision argument can be a range or a single `<rev>` which is
    interpreted as `<rev>..HEAD`, thus the same revision arguments
    are accepted as for linkgit:git-format-patch[1]. Patch files and
    revision arguments can be combined in the same invocation.

So, you are actually running git-contacts on the range 222580cb..HEAD, and 222580cb isn't even one of the patches being consulted (due to how the range syntax does not include the argument to the left of ".."). To consult just that one commit, you'd want perhaps:

    git-contacts 222580cb^..222580cb
Show 6 quoted lines
> [...] as,
>
>         git log --no-merges Documentation/git-column.txt
>
> makes it clear that I have nothing to do with it ;-).  Perhaps the
> tool gives too much credit for Signed-off-by: footer, or something.

Since git-contacts can be used as git-send-email's --cc-cmd, it can potentially be invoked many times, and it's a slow command (due to all the "blaming" via git-blame). As an optimization, git-contacts limits the timeframe of the blame via git-blame's --since option, with a hardcoded limit of 5 years. So, the git-blame invocation made by git-contacts for this patch file is:

    git blame --porcelain -C -L13,+7 -L23,+7 -L43,+6 \
        --since 5-years-ago \
        4a189fff51b1^ -- Documentation/git-column.txt

Since the lines changed by the patch have not been touched within that timeframe, git-blame assigns those lines to boundary commit 128a96c984 (Update draft release notes to 1.8.5 for the fifth batch of topics, 2013-09-20), which was authored by Junio, which is why he shows up as the only "contact".

If we remove the --since restriction:
    git blame --porcelain -C -L13,+7 -L23,+7 -L43,+6 \
        4a189fff51b1^ -- Documentation/git-column.txt

then the lines are correctly "blamed" to Duy via commit 7e29b8254f (Add column layout skeleton and git-column, 2012-04-21).

The "Limitations" section of the git-contacts documentation says this:
    Several conditions controlling a person's significance are
    currently hard-coded, such as minimum participation level (10%),
    blame date-limiting (5 years), and `-C` level for detecting moved
    and copied lines (a single `-C`). In the future, these conditions
    may become configurable.

So, this sort of potential issue was understood. Felipe's git-related[1], from which git-contacts arose, eventually grew the ability to tweak these hard-coded values via command-line options. The same could be done for git-contacts. Patches are welcome.

[1]: https://github.com/felipec/git-related
Previous: Junio C HamanoNext: frederik@ofb.net
Message 14 of 15 in “some documentation changes from the beginning of the alphabet”
  1. 0/3 some documentation changes from the beginning of the alphabetFrederick Eaton, Sep 19, 2018
  2. 1/3 git-archimport.1: specify what kind of Arch we're talking aboutFrederick Eaton, Sep 19, 2018
  3. Junio C HamanoSep 19, 2018
  4. frederik@ofb.netSep 19, 2018
  5. 3/3 git-describe.1: clarify that "human readable" is also git-readableFrederick Eaton, Sep 19, 2018
  6. 2/3 git-column.1: clarify initial description, provide examplesFrederick Eaton, Sep 19, 2018
  7. Junio C HamanoSep 19, 2018
  8. Duy NguyenSep 20, 2018
  9. frederik@ofb.netSep 20, 2018
  10. Eric SunshineSep 21, 2018
  11. Junio C HamanoSep 21, 2018
  12. frederik@ofb.netSep 21, 2018
  13. Junio C HamanoSep 19, 2018
  14. Eric SunshineSep 21, 2018
  15. frederik@ofb.netSep 21, 2018

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.