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>maint
parent
cab4feb67d
commit
3b3d443feb
|
@ -116,6 +116,7 @@ The placeholders are:
|
||||||
- '%cr': committer date, relative
|
- '%cr': committer date, relative
|
||||||
- '%ct': committer date, UNIX timestamp
|
- '%ct': committer date, UNIX timestamp
|
||||||
- '%ci': committer date, ISO 8601 format
|
- '%ci': committer date, ISO 8601 format
|
||||||
|
- '%d': ref names, like the --decorate option of linkgit:git-log[1]
|
||||||
- '%e': encoding
|
- '%e': encoding
|
||||||
- '%s': subject
|
- '%s': subject
|
||||||
- '%b': body
|
- '%b': body
|
||||||
|
|
21
pretty.c
21
pretty.c
|
@ -5,6 +5,7 @@
|
||||||
#include "revision.h"
|
#include "revision.h"
|
||||||
#include "string-list.h"
|
#include "string-list.h"
|
||||||
#include "mailmap.h"
|
#include "mailmap.h"
|
||||||
|
#include "log-tree.h"
|
||||||
|
|
||||||
static char *user_format;
|
static char *user_format;
|
||||||
|
|
||||||
|
@ -481,6 +482,23 @@ static void parse_commit_header(struct format_commit_context *context)
|
||||||
context->commit_header_parsed = 1;
|
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,
|
static size_t format_commit_item(struct strbuf *sb, const char *placeholder,
|
||||||
void *context)
|
void *context)
|
||||||
{
|
{
|
||||||
|
@ -573,6 +591,9 @@ static size_t format_commit_item(struct strbuf *sb, const char *placeholder,
|
||||||
? '<'
|
? '<'
|
||||||
: '>');
|
: '>');
|
||||||
return 1;
|
return 1;
|
||||||
|
case 'd':
|
||||||
|
format_decoration(sb, commit);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For the rest we have to parse the commit header. */
|
/* For the rest we have to parse the commit header. */
|
||||||
|
|
Loading…
Reference in New Issue