On Tue, 24 Dec 2019, Segher Boessenkool wrote:

> > That's because that commit also edits ChangeLog entries from other 
> > authors.  When a commit adds / edits ChangeLog entries for more than one 
> > author (the difference between purely editing an existing entry and adding 
> > a new one, possibly under an existing date/author header, for a 
> > multi-author commit, is not something that can reliably be determined 
> > automatically), the conversion falls back to using the committer identity 
> > instead of picking one of the multiple relevant authors from the ChangeLog 
> > files.
> 
> There is only one relevant author in r270511.  It edits a few wrong path
> names in the previous changelog entries.  People often do similar things
> (like fixing the commit date :-) )

Distinguishing "edits a previous ChangeLog entry" from "adds a new entry 
under a previous ChangeLog header for a change included in the commit" is 
a human judgement.  (It's necessary to consider the case of a ChangeLog 
header not included in the new lines added by the commit when looking for 
an attribution in a ChangeLog file because multiple ChangeLog stanzas, 
separated by blank lines, under a single date/author header, is common 
usage for multiple consecutive commits by the same author, and sometimes 
non-consecutive commits depending on how they did merging.)

> Either never use <account>@gcc.gnu.org, or always use it, don't do the
> worst of both worlds?

The heuristics here are to use an attribution from ChangeLog for the 
author where unambiguous, but to use the committer (always @gcc.gnu.org / 
@gnu.org [*], so avoiding attributions at the wrong company even where 
people were using multiple addresses simultaneously for different changes) 
as author if in doubt.  I think that's better than either always or never 
using @gcc.gnu.org.  git tools computing commit statistics can generally 
handle multiple email addresses with the same name automatically, and 
.mailmap can be used to specify more detailed mappings for past commits 
for at least git shortlog.

[*] Except in the special case of "rolfh" from the gcc2 history, where we 
identified the author of the changes they committed but not who that user 
was as a committer, so gcc.map specifies that author identity.

-- 
Joseph S. Myers
j...@polyomino.org.uk

Reply via email to