diff options
author | Ævar Arnfjörð Bjarmason <avarab@gmail.com> | 2020-12-09 16:52:08 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-12-09 23:16:42 +0100 |
commit | 058761f1c19b58afd6906672fc013327eb2096c6 (patch) | |
tree | 4872479f5161cc5946b5fafea66ff6ce78deaa9b /trailer.c | |
parent | pretty format %(trailers): add a "keyonly" (diff) | |
download | git-058761f1c19b58afd6906672fc013327eb2096c6.tar.xz git-058761f1c19b58afd6906672fc013327eb2096c6.zip |
pretty format %(trailers): add a "key_value_separator"
Add a "key_value_separator" option to the "%(trailers)" pretty format,
to go along with the existing "separator" argument. In combination
these two options make it trivial to produce machine-readable (e.g. \0
and \0\0-delimited) format output.
As elaborated on in a previous commit which added "keyonly" it was
needlessly tedious to extract structured data from "%(trailers)"
before the addition of this "key_value_separator" option. As seen by
the test being added here extracting this data now becomes trivial.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'trailer.c')
-rw-r--r-- | trailer.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -1132,7 +1132,8 @@ static void format_trailer_info(struct strbuf *out, /* If we want the whole block untouched, we can take the fast path. */ if (!opts->only_trailers && !opts->unfold && !opts->filter && - !opts->separator && !opts->key_only && !opts->value_only) { + !opts->separator && !opts->key_only && !opts->value_only && + !opts->key_value_separator) { strbuf_add(out, info->trailer_start, info->trailer_end - info->trailer_start); return; @@ -1155,8 +1156,12 @@ static void format_trailer_info(struct strbuf *out, strbuf_addbuf(out, opts->separator); if (!opts->value_only) strbuf_addbuf(out, &tok); - if (!opts->key_only && !opts->value_only) - strbuf_addstr(out, ": "); + if (!opts->key_only && !opts->value_only) { + if (opts->key_value_separator) + strbuf_addbuf(out, opts->key_value_separator); + else + strbuf_addstr(out, ": "); + } if (!opts->key_only) strbuf_addbuf(out, &val); if (!opts->separator) |