@@ -212,11 +212,12 @@ endif::git-rev-list[]
followed by a colon and zero or more comma-separated options. The
allowed options are `only` which omits non-trailer lines from the
trailer block, `unfold` to make it behave as if interpret-trailer's
- `--unfold` option was given, and `key=T` to only show trailers with
- specified key (matching is done
- case-insensitively). E.g. `%(trailers:only,unfold)` unfolds and
- shows all trailer lines, `%(trailers:key=Reviewed-by,unfold)`
- unfolds and shows trailer lines with key `Reviewed-by`.
+ `--unfold` option was given, `key=T` to only show trailers with
+ specified key (matching is done case-insensitively), and `nokey`
+ which makes it skip over the key part of the trailer and only show
+ value. E.g. `%(trailers:only,unfold)` unfolds and shows all trailer
+ lines, `%(trailers:key=Reviewed-by,unfold)` unfolds and shows
+ trailer lines with key `Reviewed-by`.
NOTE: Some placeholders may depend on other options given to the
revision traversal engine. For example, the `%g*` reflog options will
@@ -1323,6 +1323,8 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
opts.only_trailers = 1;
else if (match_placeholder_arg(arg, "unfold", &arg))
opts.unfold = 1;
+ else if (match_placeholder_arg(arg, "nokey", &arg))
+ opts.no_key = 1;
else if (skip_prefix(arg, "key=", &arg)) {
const char *end = arg + strcspn(arg, ",)");
@@ -643,6 +643,15 @@ test_expect_success '%(trailers:key=foo,unfold) properly unfolds' '
test_cmp expect actual
'
+test_expect_success '%(trailers:key=foo,nokey) shows only value' '
+ git log --no-walk --pretty="%(trailers:key=Acked-by,nokey)" >actual &&
+ {
+ echo "A U Thor <author@example.com>" &&
+ echo
+ } >expect &&
+ test_cmp expect actual
+'
+
test_expect_success 'trailer parsing not fooled by --- line' '
git commit --allow-empty -F - <<-\EOF &&
this is the subject
@@ -1150,8 +1150,10 @@ static void format_trailer_info(struct strbuf *out,
if (!opts->filter_key || !strcasecmp (tok.buf, opts->filter_key)) {
if (opts->unfold)
unfold_value(&val);
-
- strbuf_addf(out, "%s: %s\n", tok.buf, val.buf);
+ if (opts->no_key)
+ strbuf_addf(out, "%s\n", val.buf);
+ else
+ strbuf_addf(out, "%s: %s\n", tok.buf, val.buf);
}
strbuf_release(&tok);
strbuf_release(&val);
@@ -72,6 +72,7 @@ struct process_trailer_options {
int only_input;
int unfold;
int no_divider;
+ int no_key;
char *filter_key;
};