pretty: use mailmap to display username and email
Use the mailmap information to display the rewritten username and email address in all log commands. Signed-off-by: Antoine Pelisse <apelisse@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
0e2913b042
commit
dffd325f37
58
pretty.c
58
pretty.c
@ -387,9 +387,13 @@ void pp_user_info(const struct pretty_print_context *pp,
|
||||
const char *what, struct strbuf *sb,
|
||||
const char *line, const char *encoding)
|
||||
{
|
||||
struct strbuf name;
|
||||
struct strbuf mail;
|
||||
struct ident_split ident;
|
||||
int linelen, namelen;
|
||||
int linelen;
|
||||
char *line_end, *date;
|
||||
const char *mailbuf, *namebuf;
|
||||
size_t namelen, maillen;
|
||||
int max_length = 78; /* per rfc2822 */
|
||||
unsigned long time;
|
||||
int tz;
|
||||
@ -408,42 +412,54 @@ void pp_user_info(const struct pretty_print_context *pp,
|
||||
if (split_ident_line(&ident, line, linelen))
|
||||
return;
|
||||
|
||||
namelen = ident.mail_end - ident.name_begin + 1;
|
||||
|
||||
mailbuf = ident.mail_begin;
|
||||
maillen = ident.mail_end - ident.mail_begin;
|
||||
namebuf = ident.name_begin;
|
||||
namelen = ident.name_end - ident.name_begin;
|
||||
|
||||
if (pp->mailmap)
|
||||
map_user(pp->mailmap, &mailbuf, &maillen, &namebuf, &namelen);
|
||||
|
||||
strbuf_init(&mail, 0);
|
||||
strbuf_init(&name, 0);
|
||||
|
||||
strbuf_add(&mail, mailbuf, maillen);
|
||||
strbuf_add(&name, namebuf, namelen);
|
||||
|
||||
namelen = name.len + mail.len + 3; /* ' ' + '<' + '>' */
|
||||
time = strtoul(ident.date_begin, &date, 10);
|
||||
tz = strtol(date, NULL, 10);
|
||||
|
||||
if (pp->fmt == CMIT_FMT_EMAIL) {
|
||||
int display_name_length;
|
||||
|
||||
display_name_length = ident.name_end - ident.name_begin;
|
||||
|
||||
strbuf_addstr(sb, "From: ");
|
||||
if (needs_rfc2047_encoding(line, display_name_length, RFC2047_ADDRESS)) {
|
||||
add_rfc2047(sb, line, display_name_length,
|
||||
encoding, RFC2047_ADDRESS);
|
||||
if (needs_rfc2047_encoding(name.buf, name.len, RFC2047_ADDRESS)) {
|
||||
add_rfc2047(sb, name.buf, name.len,
|
||||
encoding, RFC2047_ADDRESS);
|
||||
max_length = 76; /* per rfc2047 */
|
||||
} else if (needs_rfc822_quoting(line, display_name_length)) {
|
||||
} else if (needs_rfc822_quoting(name.buf, name.len)) {
|
||||
struct strbuf quoted = STRBUF_INIT;
|
||||
add_rfc822_quoted("ed, line, display_name_length);
|
||||
add_rfc822_quoted("ed, name.buf, name.len);
|
||||
strbuf_add_wrapped_bytes(sb, quoted.buf, quoted.len,
|
||||
-6, 1, max_length);
|
||||
strbuf_release("ed);
|
||||
} else {
|
||||
strbuf_add_wrapped_bytes(sb, line, display_name_length,
|
||||
-6, 1, max_length);
|
||||
strbuf_add_wrapped_bytes(sb, name.buf, name.len,
|
||||
-6, 1, max_length);
|
||||
}
|
||||
if (namelen - display_name_length + last_line_length(sb) > max_length) {
|
||||
if (namelen - name.len + last_line_length(sb) > max_length)
|
||||
strbuf_addch(sb, '\n');
|
||||
if (!isspace(ident.name_end[0]))
|
||||
strbuf_addch(sb, ' ');
|
||||
}
|
||||
strbuf_add(sb, ident.name_end, namelen - display_name_length);
|
||||
strbuf_addch(sb, '\n');
|
||||
|
||||
strbuf_addf(sb, " <%s>\n", mail.buf);
|
||||
} else {
|
||||
strbuf_addf(sb, "%s: %.*s%.*s\n", what,
|
||||
strbuf_addf(sb, "%s: %.*s%s <%s>\n", what,
|
||||
(pp->fmt == CMIT_FMT_FULLER) ? 4 : 0,
|
||||
" ", namelen, line);
|
||||
" ", name.buf, mail.buf);
|
||||
}
|
||||
|
||||
strbuf_release(&mail);
|
||||
strbuf_release(&name);
|
||||
|
||||
switch (pp->fmt) {
|
||||
case CMIT_FMT_MEDIUM:
|
||||
strbuf_addf(sb, "Date: %s\n", show_date(time, tz, pp->date_mode));
|
||||
|
Loading…
Reference in New Issue
Block a user