add '%d' pretty format specifier to show decoration
Add a new format placeholder, %d, which expands to a ref name decoration (think git log --decorate). It expands to an empty string if the commit has no decoration, or otherwise to a comma (and space) separated list of decorations, surrounded by parentheses and a leading space. Michael Dressel implemented an initial version and chose the letter d, Junio suggested to add a leading space and parentheses. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
cab4feb67d
commit
3b3d443feb
@ -116,6 +116,7 @@ The placeholders are:
|
||||
- '%cr': committer date, relative
|
||||
- '%ct': committer date, UNIX timestamp
|
||||
- '%ci': committer date, ISO 8601 format
|
||||
- '%d': ref names, like the --decorate option of linkgit:git-log[1]
|
||||
- '%e': encoding
|
||||
- '%s': subject
|
||||
- '%b': body
|
||||
|
21
pretty.c
21
pretty.c
@ -5,6 +5,7 @@
|
||||
#include "revision.h"
|
||||
#include "string-list.h"
|
||||
#include "mailmap.h"
|
||||
#include "log-tree.h"
|
||||
|
||||
static char *user_format;
|
||||
|
||||
@ -481,6 +482,23 @@ static void parse_commit_header(struct format_commit_context *context)
|
||||
context->commit_header_parsed = 1;
|
||||
}
|
||||
|
||||
static void format_decoration(struct strbuf *sb, const struct commit *commit)
|
||||
{
|
||||
struct name_decoration *d;
|
||||
const char *prefix = " (";
|
||||
|
||||
load_ref_decorations();
|
||||
d = lookup_decoration(&name_decoration, &commit->object);
|
||||
while (d) {
|
||||
strbuf_addstr(sb, prefix);
|
||||
prefix = ", ";
|
||||
strbuf_addstr(sb, d->name);
|
||||
d = d->next;
|
||||
}
|
||||
if (prefix[0] == ',')
|
||||
strbuf_addch(sb, ')');
|
||||
}
|
||||
|
||||
static size_t format_commit_item(struct strbuf *sb, const char *placeholder,
|
||||
void *context)
|
||||
{
|
||||
@ -573,6 +591,9 @@ static size_t format_commit_item(struct strbuf *sb, const char *placeholder,
|
||||
? '<'
|
||||
: '>');
|
||||
return 1;
|
||||
case 'd':
|
||||
format_decoration(sb, commit);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* For the rest we have to parse the commit header. */
|
||||
|
Loading…
Reference in New Issue
Block a user