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

2017-03-23 Thread Stefan Beller
On Thu, Mar 23, 2017 at 4:03 AM, Dennis Kaarsemaker
 wrote:
> 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 
>>
>> $ git cat-file -p 3290fe6dd2a7e2bb35ac760443335dec58802ff1
>> author Stefan Beller  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


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

2017-03-23 Thread Dennis Kaarsemaker
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 
> 
> $ git cat-file -p 3290fe6dd2a7e2bb35ac760443335dec58802ff1
> author Stefan Beller  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.
-- 
Dennis Kaarsemaker
http://www.kaarsemaker.net