Merge branch 'js/maint-pretty-mailmap'

* js/maint-pretty-mailmap:
  Add pretty format %aN which gives the author name, respecting .mailmap
This commit is contained in:
Junio C Hamano 2008-07-15 18:59:04 -07:00
commit fab600ce2e
2 changed files with 27 additions and 2 deletions

View File

@ -101,6 +101,7 @@ The placeholders are:
- '%P': parent hashes - '%P': parent hashes
- '%p': abbreviated parent hashes - '%p': abbreviated parent hashes
- '%an': author name - '%an': author name
- '%aN': author name (respecting .mailmap)
- '%ae': author email - '%ae': author email
- '%ad': author date - '%ad': author date
- '%aD': author date, RFC2822 style - '%aD': author date, RFC2822 style
@ -108,6 +109,7 @@ The placeholders are:
- '%at': author date, UNIX timestamp - '%at': author date, UNIX timestamp
- '%ai': author date, ISO 8601 format - '%ai': author date, ISO 8601 format
- '%cn': committer name - '%cn': committer name
- '%cN': committer name (respecting .mailmap)
- '%ce': committer email - '%ce': committer email
- '%cd': committer date - '%cd': committer date
- '%cD': committer date, RFC2822 style - '%cD': committer date, RFC2822 style

View File

@ -3,6 +3,8 @@
#include "utf8.h" #include "utf8.h"
#include "diff.h" #include "diff.h"
#include "revision.h" #include "revision.h"
#include "path-list.h"
#include "mailmap.h"
static char *user_format; static char *user_format;
@ -288,6 +290,25 @@ static char *logmsg_reencode(const struct commit *commit,
return out; return out;
} }
static int mailmap_name(struct strbuf *sb, const char *email)
{
static struct path_list *mail_map;
char buffer[1024];
if (!mail_map) {
mail_map = xcalloc(1, sizeof(*mail_map));
read_mailmap(mail_map, ".mailmap", NULL);
}
if (!mail_map->nr)
return -1;
if (!map_email(mail_map, email, buffer, sizeof(buffer)))
return -1;
strbuf_addstr(sb, buffer);
return 0;
}
static size_t format_person_part(struct strbuf *sb, char part, static size_t format_person_part(struct strbuf *sb, char part,
const char *msg, int len) const char *msg, int len)
{ {
@ -309,10 +330,12 @@ static size_t format_person_part(struct strbuf *sb, char part,
if (end >= len - 2) if (end >= len - 2)
goto skip; goto skip;
if (part == 'n') { /* name */ if (part == 'n' || part == 'N') { /* name */
while (end > 0 && isspace(msg[end - 1])) while (end > 0 && isspace(msg[end - 1]))
end--; end--;
strbuf_add(sb, msg, end); if (part != 'N' || !msg[end] || !msg[end + 1] ||
mailmap_name(sb, msg + end + 2) < 0)
strbuf_add(sb, msg, end);
return placeholder_len; return placeholder_len;
} }
start = ++end; /* save email start position */ start = ++end; /* save email start position */