Junio C Hamano <gitster@xxxxxxxxx> writes: > Rich Midwinter <rich.midwinter@xxxxxxxxx> writes: > >> I'm working on a project for a large organisation that wants to make >> widespread use of git and the mailmap feature. >> >> This seems to be supported by default in git-shortlog but not git-log >> (and other variants) without specifying custom formats, which isn't >> really something I want to try and 'fix' across the organisation. Is >> there a reason for this feature omission or has it just evolved that >> way and could it be fixed? > > I think it was pretty much the latter, but people may already be > depending on the command to give them the "true as recorded back > then" names in the output. A fix may have to involve inventing a > new option "log --use-mailmap" that is explicitly given from the > command line. If somebody wants to do this, I think the overall design should go like this: * We may want to rewrite blame.c::get_ac_line() and the code in pretty.c::pp_user_info() that parse author/committer lines by using ident.c::split_ident_line() for better code reuse as a preparation step before all of the below. * We may want to lift the buffer length limit from the implementation of mailmap.c::map_user() by using the strbuf API as a preparation step before all of the below. * We may also want to rethink its signature (we may want to get a single strbuf and have the function parse out "Name <mail>"; I didn't check the existing callers to see if that would make it easier to use, and if it does not, this obviously shouldn't be done) as a preparation step before all of the below. * Introduce a new "struct string_list *mailmap" member to "struct pretty_print_context" and "struct rev_info" (default to NULL); * In log-tree.c::show_log(), copy opt->mailmap to ctx.mailmap; * Update pretty.c::pp_user_info() to convert the email address on "line" (between the beginning and "namelen") by calling map_user() immediately after it parses time/tz out, and adjust the remainder of the function to use it, when pp->mailmap is present; * Teach log.c::cmd_log_init_finosh() about "--use-mailmap" option. Allocate one "struct string_list" instance and use read_mailmap() on it when the option is used, and store it in rev->mailmap. -- 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