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

Re: blame --line-porcelain is providing me with funny output

From
Stefan Beller <sbeller@google.com>
Date
Mar 23, 2017, 18:01 UTC
Message-ID
<CAGZ79kY0D6z=4=3QVkiQSqmVV9bvZpi9OUcpm+fe--q4prPC+g@mail.gmail.com>
In-Reply-To
<1490266989.10080.6.camel@kaarsemaker.net>

On Thu, Mar 23, 2017 at 4:03 AM, Dennis Kaarsemaker <dennis@kaarsemaker.net> wrote:

Show 15 quoted lines
> On Wed, 2017-03-22 at 18:32 -0600, Edmundo Carmona Antoranz wrote:
>>
>> $ git blame --no-progress -w --line-porcelain -L 72,72
>> author-mail <somemail@gmail.com>
>>
>> $ git cat-file -p 3290fe6dd2a7e2bb35ac760443335dec58802ff1
>> author Stefan Beller <somemail@google.com> 1484160452 -0800
>>
>> Committer mails are matching, however author mail does not match
>> between line-porcelain and cat-file. Is there a reason for that?
>
> The commit object has Stefan's Google address, but git.git's  mailmap
> maps that to his gmail address.
>
> git blame actually does this mapping, where git cat-file does not.
Yes, I think the plumbing tools in general want to ignore the .mailmap file.

The committer (Junio) does use the email address, which is recorded as his primary address in .mailmap as well, so no matter if the .mailmap file is taken into account, it is the same email address.

Currently I contribute patches via the @google address, but the @gmail address is marked as the primary address in the .mailmap file, such that it depends whether the .mailmap file is taken into account which email address is displayed.

So doesn't depend on the author or committer fields, but instead it depends on the underlying data (.mailmap and recorded person for author/committer).

For the exact mechanism of .mailmap look at "man git shortlog" that has a section MAPPING AUTHORS), which states its effect, but not the purpose of mapping persons:

    The .mailmap feature is used to coalesce together commits
    by the same person in the shortlog, where their name and/or
    email address was spelled differently.

One purpose could be to just fix data (i.e. misspelled name, unconfigured repo; back then there were quite a few name="" email="root@localhost" commits).

Another aspect is to keep track of the same person at different stages of life, e.g. when switching employers (or just email providers), you may contribute from different email addresses and want to appear as the same person in porcelain-viewed commits. There are quite a few examples in the .mailmap file for different email addresses.

One notable example is found in 94b410bba8 (.mailmap: Map email addresses to names, 2013-07-12):

    While the most changes happen at the email addresses, we also have a
    name change in here. Karl Hasselström is now known as Karl Wiberg
    due to marriage. Congratulations!

Thanks, Stefan

Previous: Dennis Kaarsemaker
Message 3 of 3 in “blame --line-porcelain is providing me with funny output”
  1. Edmundo Carmona AntoranzMar 23, 2017
  2. Dennis KaarsemakerMar 23, 2017
  3. Stefan BellerMar 23, 2017

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.