pretty: add %(trailers) format for displaying trailers of a commit message

Recent patches have expanded on the trailers.c code and we have the
builtin commant git-interpret-trailers which can be used to add or
modify trailer lines. However, there is no easy way to simply display
the trailers of a commit message.

Add support for %(trailers) format modifier which will use the
trailer_info_get() calls to read trailers in an identical way as git
interpret-trailers does. Use a long format option instead of a short
name so that future work can more easily unify ref-filter and pretty
formats.

Add documentation and tests for the same.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jacob Keller
2016-11-18 16:58:14 -08:00
committed by Junio C Hamano
parent 967dfd4d56
commit d9f31fbfe9
3 changed files with 45 additions and 0 deletions

View File

@ -10,6 +10,7 @@
#include "color.h"
#include "reflog-walk.h"
#include "gpg-interface.h"
#include "trailer.h"
static char *user_format;
static struct cmt_fmt_map {
@ -889,6 +890,16 @@ const char *format_subject(struct strbuf *sb, const char *msg,
return msg;
}
static void format_trailers(struct strbuf *sb, const char *msg)
{
struct trailer_info info;
trailer_info_get(&info, msg);
strbuf_add(sb, info.trailer_start,
info.trailer_end - info.trailer_start);
trailer_info_release(&info);
}
static void parse_commit_message(struct format_commit_context *c)
{
const char *msg = c->message + c->message_off;
@ -1292,6 +1303,12 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
strbuf_addstr(sb, msg + c->body_off);
return 1;
}
if (starts_with(placeholder, "(trailers)")) {
format_trailers(sb, msg + c->subject_off);
return strlen("(trailers)");
}
return 0; /* unknown placeholder */
}