On 07/12/2013 10:28 PM, Junio C Hamano wrote: > Stefan Beller <stefanbeller@xxxxxxxxxxxxxx> writes: > >> # Adding the line to the mailmap should make life easy, so we know >> # it's the same person >> echo "A <A@xxxxxxxxxxx> <changed_email@xxxxxxxxxxx>" > .mailmap > > While I was looking at this, I noticed this piece of code: > > diff --git a/mailmap.c b/mailmap.c > index 2a7b366..418081e 100644 > --- a/mailmap.c > +++ b/mailmap.c > @@ -122,7 +122,7 @@ static char *parse_name_and_email(char *buffer, char **name, > while (nend > nstart && isspace(*nend)) > --nend; > > - *name = (nstart < nend ? nstart : NULL); > + *name = (nstart <= nend ? nstart : NULL); > *email = left+1; > *(nend+1) = '\0'; > *right++ = '\0'; > > The function is given a buffer "A <A@xxxxxxxxxxx>...", nstart scans > from the beginning of the buffer, skipping whitespaces (there isn't > any, so nstart points at the buffer), while nend starts from one > byte before the first '<' and skips whitespaces backwards and ends > at the first non-whitespace (i.e. it hits "A" at the beginning of > the buffer). nstart == nend in this case for a single-letter name, > and an off-by-one error makes it fail to pick up the name, which > makes the entry equivalent to > > <A@xxxxxxxxxxx> <changed_email@xxxxxxxxxxx> > > without the name. I do not think this bug affected anything you > observed, though. > >> git shortlog -sne >> 1 A <A@xxxxxxxxxxx> >> 1 A <a@xxxxxxxxxxx> > > This is coming from mailmap.c::add_mapping() that downcases the > e-mail address. > > changed_email@xxxxxxxxxxx is mapped to a@xxxxxxxxxxx because of this > downcasing, while "A <A@xxxxxxxxxxx>" does not have any entry for it > in the .mailmap file, so it is given back as-is. Hence we see two > distinct entries. > So do I understand it right, we're having 2 bugs in here? One being triggered by the short name, only one character. So if you want to debug the other bug with a longer name, you can either use a made up name, or run git shortlog -sne |grep Knut in the git repository having the mailmap file already updated. The way the mailmap file is written, I'd assume only one line to be found, as of now 2 lines come up 2 Knut Franke <knut.franke@xxxxxx> 1 Knut Franke <Knut.Franke@xxxxxx> which seems to downcase the whole first email. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html