git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Linus Arver via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org,  Emily Shaffer <nasamuffin@google.com>,
	 Christian Couder <chriscool@tuxfamily.org>,
	 Linus Arver <linusa@google.com>
Subject: Re: [PATCH 05/10] sequencer: use the trailer iterator
Date: Thu, 18 Jan 2024 16:45:59 -0800	[thread overview]
Message-ID: <xmqq34uunoag.fsf@gitster.g> (raw)
In-Reply-To: <fd4a9d54d9522973a4c22e43cb1d7964033d4837.1704869487.git.gitgitgadget@gmail.com> (Linus Arver via GitGitGadget's message of "Wed, 10 Jan 2024 06:51:21 +0000")

"Linus Arver via GitGitGadget" <gitgitgadget@gmail.com> writes:

> From: Linus Arver <linusa@google.com>
>
> This patch allows for the removal of "trailer_info_get()" from the
> trailer.h API, which will be in the next patch.
>
> Instead of calling "trailer_info_get()", which is a low-level function
> in the trailers implementation (trailer.c), call
> trailer_iterator_advance(), which was specifically designed for public
> consumption in f0939a0eb1 (trailer: add interface for iterating over
> commit trailers, 2020-09-27).
>
> Avoiding "trailer_info_get()" means we don't have to worry about options
> like "no_divider" (relevant for parsing trailers). We also don't have to
> check for things like "info.trailer_start == info.trailer_end" to see
> whether there were any trailers (instead we can just check to see
> whether the iterator advanced at all).

Nice.

> Also, teach the iterator about non-trailer lines, by adding a new field
> called "raw" to hold both trailer and non-trailer lines. This is
> necessary because a "trailer block" is a list of trailer lines of at
> least 25% trailers (see 146245063e (trailer: allow non-trailers in
> trailer block, 2016-10-21)), such that it may hold non-trailer lines.

OK.  This would change behaviour, wouldn't it, in the sense that we
used to yield a non-trailer line from the old iterator but the new
one skips them?  Is that something we can demonstrate and protect in
tests (presumably once we conclude these refactoring, we would be
able to call into this machinery from unit-testing framework)?

Thanks.

> Signed-off-by: Linus Arver <linusa@google.com>
> ---
>  builtin/shortlog.c |  7 +++++--
>  sequencer.c        | 35 +++++++++++++++--------------------
>  trailer.c          | 20 ++++++++++++--------
>  trailer.h          | 13 +++++++++++++
>  4 files changed, 45 insertions(+), 30 deletions(-)
>
> diff --git a/builtin/shortlog.c b/builtin/shortlog.c
> index 1307ed2b88a..dc8fd5a5532 100644
> --- a/builtin/shortlog.c
> +++ b/builtin/shortlog.c
> @@ -172,7 +172,7 @@ static void insert_records_from_trailers(struct shortlog *log,
>  					 const char *oneline)
>  {
>  	struct trailer_iterator iter;
> -	const char *commit_buffer, *body;
> +	const char *commit_buffer, *body, *value;
>  	struct strbuf ident = STRBUF_INIT;
>  
>  	if (!log->trailers.nr)
> @@ -190,7 +190,10 @@ static void insert_records_from_trailers(struct shortlog *log,
>  
>  	trailer_iterator_init(&iter, body);
>  	while (trailer_iterator_advance(&iter)) {
> -		const char *value = iter.val.buf;
> +		if (!iter.is_trailer)
> +			continue;
> +
> +		value = iter.val.buf;
>  
>  		if (!string_list_has_string(&log->trailers, iter.key.buf))
>  			continue;
> diff --git a/sequencer.c b/sequencer.c
> index 3cc88d8a800..d199869cda9 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -319,37 +319,32 @@ static const char *get_todo_path(const struct replay_opts *opts)
>  static int has_conforming_footer(struct strbuf *sb, struct strbuf *sob,
>  	size_t ignore_footer)
>  {
> -	struct process_trailer_options opts = PROCESS_TRAILER_OPTIONS_INIT;
> -	struct trailer_info info;
> -	size_t i;
> -	int found_sob = 0, found_sob_last = 0;
> -	char saved_char;
> -
> -	opts.no_divider = 1;
> +	struct trailer_iterator iter;
> +	size_t i = 0, found_sob = 0;
> +	char saved_char = sb->buf[sb->len - ignore_footer];
>  
>  	if (ignore_footer) {
> -		saved_char = sb->buf[sb->len - ignore_footer];
>  		sb->buf[sb->len - ignore_footer] = '\0';
>  	}
>  
> -	trailer_info_get(&info, sb->buf, &opts);
> +	trailer_iterator_init(&iter, sb->buf);
> +	while (trailer_iterator_advance(&iter)) {
> +		i++;
> +		if (sob &&
> +		    iter.is_trailer &&
> +		    !strncmp(iter.raw.buf, sob->buf, sob->len)) {
> +			found_sob = i;
> +		}
> +	}
> +	trailer_iterator_release(&iter);
>  
>  	if (ignore_footer)
>  		sb->buf[sb->len - ignore_footer] = saved_char;
>  
> -	if (info.trailer_block_start == info.trailer_block_end)
> +	if (!i)
>  		return 0;
>  
> -	for (i = 0; i < info.trailer_nr; i++)
> -		if (sob && !strncmp(info.trailers[i], sob->buf, sob->len)) {
> -			found_sob = 1;
> -			if (i == info.trailer_nr - 1)
> -				found_sob_last = 1;
> -		}
> -
> -	trailer_info_release(&info);
> -
> -	if (found_sob_last)
> +	if (found_sob == i)
>  		return 3;
>  	if (found_sob)
>  		return 2;
> diff --git a/trailer.c b/trailer.c
> index 132f22b3dd7..593717fd56c 100644
> --- a/trailer.c
> +++ b/trailer.c
> @@ -1151,6 +1151,7 @@ void trailer_iterator_init(struct trailer_iterator *iter, const char *msg)
>  	struct process_trailer_options opts = PROCESS_TRAILER_OPTIONS_INIT;
>  	strbuf_init(&iter->key, 0);
>  	strbuf_init(&iter->val, 0);
> +	strbuf_init(&iter->raw, 0);
>  	opts.no_divider = 1;
>  	trailer_info_get(&iter->internal.info, msg, &opts);
>  	iter->internal.cur = 0;
> @@ -1158,17 +1159,19 @@ void trailer_iterator_init(struct trailer_iterator *iter, const char *msg)
>  
>  int trailer_iterator_advance(struct trailer_iterator *iter)
>  {
> -	while (iter->internal.cur < iter->internal.info.trailer_nr) {
> -		char *trailer = iter->internal.info.trailers[iter->internal.cur++];
> -		int separator_pos = find_separator(trailer, separators);
> -
> -		if (separator_pos < 1)
> -			continue; /* not a real trailer */
> -
> +	char *line;
> +	int separator_pos;
> +	if (iter->internal.cur < iter->internal.info.trailer_nr) {
> +		line = iter->internal.info.trailers[iter->internal.cur++];
> +		separator_pos = find_separator(line, separators);
> +		iter->is_trailer = (separator_pos > 0);
> +
> +		strbuf_reset(&iter->raw);
> +		strbuf_addstr(&iter->raw, line);
>  		strbuf_reset(&iter->key);
>  		strbuf_reset(&iter->val);
>  		parse_trailer(&iter->key, &iter->val, NULL,
> -			      trailer, separator_pos);
> +			      line, separator_pos);
>  		unfold_value(&iter->val);
>  		return 1;
>  	}
> @@ -1180,4 +1183,5 @@ void trailer_iterator_release(struct trailer_iterator *iter)
>  	trailer_info_release(&iter->internal.info);
>  	strbuf_release(&iter->val);
>  	strbuf_release(&iter->key);
> +	strbuf_release(&iter->raw);
>  }
> diff --git a/trailer.h b/trailer.h
> index 50f70556302..d50c9fd79b2 100644
> --- a/trailer.h
> +++ b/trailer.h
> @@ -127,6 +127,19 @@ struct trailer_iterator {
>  	struct strbuf key;
>  	struct strbuf val;
>  
> +	/*
> +	 * Raw line (e.g., "foo: bar baz") before being parsed as a trailer
> +	 * key/val pair. This field can contain non-trailer lines because it's
> +	 * valid for a trailer block to contain such lines (i.e., we only
> +	 * require 25% of the lines in a trailer block to be trailer lines).
> +	 */
> +	struct strbuf raw;
> +
> +	/*
> +	 * 1 if the raw line was parsed as a separate key/val pair.
> +	 */
> +	int is_trailer;
> +
>  	/* private */
>  	struct {
>  		struct trailer_info info;

  reply	other threads:[~2024-01-19  0:46 UTC|newest]

Thread overview: 202+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-10  6:51 [PATCH 00/10] Enrich Trailer API Linus Arver via GitGitGadget
2024-01-10  6:51 ` [PATCH 01/10] trailer: move process_trailers() to interpret-trailers.c Linus Arver via GitGitGadget
2024-01-18 22:26   ` Junio C Hamano
2024-01-19  0:21     ` Linus Arver
2024-01-10  6:51 ` [PATCH 02/10] trailer: include "trailer" term in API functions Linus Arver via GitGitGadget
2024-01-18 22:28   ` Junio C Hamano
2024-01-19  0:12     ` Linus Arver
2024-01-19  0:15       ` Junio C Hamano
2024-01-10  6:51 ` [PATCH 03/10] trailer: unify trailer formatting machinery Linus Arver via GitGitGadget
2024-01-18 22:56   ` Junio C Hamano
2024-01-19  1:12     ` Linus Arver
2024-01-10  6:51 ` [PATCH 04/10] trailer: delete obsolete formatting functions Linus Arver via GitGitGadget
2024-01-19  0:31   ` Junio C Hamano
2024-01-10  6:51 ` [PATCH 05/10] sequencer: use the trailer iterator Linus Arver via GitGitGadget
2024-01-19  0:45   ` Junio C Hamano [this message]
2024-01-20 20:04     ` Linus Arver
2024-01-22 23:22   ` Linus Arver
2024-01-10  6:51 ` [PATCH 06/10] trailer: make trailer_info struct private Linus Arver via GitGitGadget
2024-01-19  0:58   ` Junio C Hamano
2024-01-25 19:35   ` Josh Steadmon
2024-01-25 20:32     ` Junio C Hamano
2024-01-10  6:51 ` [PATCH 07/10] trailer: spread usage of "trailer_block" language Linus Arver via GitGitGadget
2024-01-19  1:03   ` Junio C Hamano
2024-01-20 20:09     ` Linus Arver
2024-01-10  6:51 ` [PATCH 08/10] trailer: prepare to move parse_trailers_from_command_line_args() to builtin Linus Arver via GitGitGadget
2024-01-25 23:39   ` Josh Steadmon
2024-01-26  0:14     ` Linus Arver
2024-01-10  6:51 ` [PATCH 09/10] trailer: move arg handling to interpret-trailers.c Linus Arver via GitGitGadget
2024-01-19  1:14   ` Junio C Hamano
2024-01-20 20:14     ` Linus Arver
2024-01-10  6:51 ` [PATCH 10/10] trailer: delete obsolete argument handling code from API Linus Arver via GitGitGadget
2024-01-10 19:45 ` [PATCH 00/10] Enrich Trailer API Junio C Hamano
2024-01-13  1:35   ` Linus Arver
2024-01-14 20:05     ` Linus Arver
2024-01-25 23:54 ` Josh Steadmon
2024-01-26 22:38 ` [PATCH v2 " Linus Arver via GitGitGadget
2024-01-26 22:38   ` [PATCH v2 01/10] trailer: prepare to expose functions as part of API Linus Arver via GitGitGadget
2024-01-30  0:44     ` Josh Steadmon
2024-01-30  2:43       ` Linus Arver
2024-01-26 22:38   ` [PATCH v2 02/10] trailer: move interpret_trailers() to interpret-trailers.c Linus Arver via GitGitGadget
2024-01-26 22:38   ` [PATCH v2 03/10] trailer: unify trailer formatting machinery Linus Arver via GitGitGadget
2024-01-30  0:24     ` Josh Steadmon
2024-01-30  2:58       ` Linus Arver
2024-01-26 22:38   ` [PATCH v2 04/10] trailer: delete obsolete formatting functions Linus Arver via GitGitGadget
2024-01-26 22:38   ` [PATCH v2 05/10] sequencer: use the trailer iterator Linus Arver via GitGitGadget
2024-01-26 22:38   ` [PATCH v2 06/10] trailer: make trailer_info struct private Linus Arver via GitGitGadget
2024-01-26 22:38   ` [PATCH v2 07/10] trailer: spread usage of "trailer_block" language Linus Arver via GitGitGadget
2024-01-26 22:38   ` [PATCH v2 08/10] trailer: prepare to move parse_trailers_from_command_line_args() to builtin Linus Arver via GitGitGadget
2024-01-26 22:38   ` [PATCH v2 09/10] trailer: move arg handling to interpret-trailers.c Linus Arver via GitGitGadget
2024-01-28  5:01     ` Linus Arver
2024-01-28  6:39     ` Linus Arver
2024-01-26 22:38   ` [PATCH v2 10/10] trailer: delete obsolete argument handling code from API Linus Arver via GitGitGadget
2024-01-31  1:22   ` [PATCH v3 00/10] Enrich Trailer API Linus Arver via GitGitGadget
2024-01-31  1:22     ` [PATCH v3 01/10] trailer: prepare to expose functions as part of API Linus Arver via GitGitGadget
2024-01-31  1:22     ` [PATCH v3 02/10] trailer: move interpret_trailers() to interpret-trailers.c Linus Arver via GitGitGadget
2024-01-31 18:54       ` Junio C Hamano
2024-01-31 23:20         ` Linus Arver
2024-01-31  1:22     ` [PATCH v3 03/10] trailer: unify trailer formatting machinery Linus Arver via GitGitGadget
2024-01-31 20:02       ` Josh Steadmon
2024-01-31 23:21         ` Linus Arver
2024-02-01 17:48           ` Junio C Hamano
2024-02-01 18:22             ` Linus Arver
2024-01-31 20:13       ` Junio C Hamano
2024-01-31 22:16         ` Junio C Hamano
2024-02-01  0:46           ` Linus Arver
2024-02-01  1:07             ` Junio C Hamano
2024-02-01 16:41               ` Junio C Hamano
2024-02-01 18:26               ` Linus Arver
2024-02-01 19:21                 ` Junio C Hamano
2024-02-02  7:23                   ` Linus Arver
2024-02-02 17:26                     ` Junio C Hamano
2024-01-31 23:29         ` Linus Arver
2024-01-31  1:22     ` [PATCH v3 04/10] sequencer: use the trailer iterator Linus Arver via GitGitGadget
2024-02-01 18:06       ` Junio C Hamano
2024-02-01 19:14         ` Linus Arver
2024-02-03  0:39           ` Linus Arver
2024-01-31  1:22     ` [PATCH v3 05/10] trailer: make trailer_info struct private Linus Arver via GitGitGadget
2024-02-01 18:49       ` Junio C Hamano
2024-02-03  1:09         ` Linus Arver
2024-02-03  4:43           ` Junio C Hamano
2024-01-31  1:22     ` [PATCH v3 06/10] trailer: spread usage of "trailer_block" language Linus Arver via GitGitGadget
2024-02-01 18:57       ` Junio C Hamano
2024-02-03  1:37         ` Linus Arver
2024-01-31  1:22     ` [PATCH v3 07/10] trailer: prepare to move parse_trailers_from_command_line_args() to builtin Linus Arver via GitGitGadget
2024-02-01 19:06       ` Junio C Hamano
2024-01-31  1:22     ` [PATCH v3 08/10] trailer: move arg handling to interpret-trailers.c Linus Arver via GitGitGadget
2024-02-01 22:23       ` Junio C Hamano
2024-02-03  1:48         ` Linus Arver
2024-02-06  1:01         ` Linus Arver
2024-01-31  1:22     ` [PATCH v3 09/10] trailer: delete obsolete argument handling code from API Linus Arver via GitGitGadget
2024-02-01 22:25       ` Junio C Hamano
2024-02-03  1:40         ` Linus Arver
2024-01-31  1:22     ` [PATCH v3 10/10] trailer: introduce "template" term for readability Linus Arver via GitGitGadget
2024-02-06  5:12     ` [PATCH v4 00/28] Enrich Trailer API Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 01/28] trailer: free trailer_info _after_ all related usage Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 02/28] shortlog: add test for de-duplicating folded trailers Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 03/28] trailer: prepare to expose functions as part of API Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 04/28] trailer: move interpret_trailers() to interpret-trailers.c Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 05/28] trailer: start preparing for formatting unification Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 06/28] trailer_info_get(): reorder parameters Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 07/28] format_trailers(): use strbuf instead of FILE Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 08/28] format_trailer_info(): move "fast path" to caller Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 09/28] format_trailers_from_commit(): indirectly call trailer_info_get() Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 10/28] format_trailer_info(): use trailer_item objects Linus Arver via GitGitGadget
2024-02-09 21:53         ` Junio C Hamano
2024-02-13 16:35           ` Linus Arver
2024-02-06  5:12       ` [PATCH v4 11/28] format_trailer_info(): drop redundant unfold_value() Linus Arver via GitGitGadget
2024-02-09 21:54         ` Junio C Hamano
2024-02-06  5:12       ` [PATCH v4 12/28] format_trailer_info(): append newline for non-trailer lines Linus Arver via GitGitGadget
2024-02-09 21:53         ` Junio C Hamano
2024-02-12 23:37         ` Christian Couder
2024-02-13 16:49           ` Linus Arver
2024-02-06  5:12       ` [PATCH v4 13/28] trailer: begin formatting unification Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 14/28] format_trailer_info(): teach it about opts->trim_empty Linus Arver via GitGitGadget
2024-02-12 23:38         ` Christian Couder
2024-02-13 17:05           ` Linus Arver
2024-02-13 17:21             ` Christian Couder
2024-02-06  5:12       ` [PATCH v4 15/28] format_trailer_info(): avoid double-printing the separator Linus Arver via GitGitGadget
2024-02-12 23:38         ` Christian Couder
2024-02-13 17:21           ` Linus Arver
2024-02-13 17:25             ` Christian Couder
2024-02-13 19:52               ` Linus Arver
2024-03-15  5:31                 ` Linus Arver
2024-02-13 20:41         ` Kristoffer Haugsbakk
2024-02-06  5:12       ` [PATCH v4 16/28] trailer: finish formatting unification Linus Arver via GitGitGadget
2024-02-09 21:53         ` Junio C Hamano
2024-02-12 23:38         ` Christian Couder
2024-02-13 17:30           ` Linus Arver
2024-02-06  5:12       ` [PATCH v4 17/28] trailer: teach iterator about non-trailer lines Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 18/28] sequencer: use the trailer iterator Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 19/28] trailer: make trailer_info struct private Linus Arver via GitGitGadget
2024-02-09 21:53         ` Junio C Hamano
2024-02-13 17:36           ` Linus Arver
2024-02-12 23:38         ` Christian Couder
2024-02-13 17:41           ` Linus Arver
2024-02-06  5:12       ` [PATCH v4 20/28] trailer: retire trailer_info_get() from API Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 21/28] trailer: spread usage of "trailer_block" language Linus Arver via GitGitGadget
2024-02-12 23:39         ` Christian Couder
2024-02-13 17:47           ` Linus Arver
2024-02-06  5:12       ` [PATCH v4 22/28] trailer: prepare to delete "parse_trailers_from_command_line_args()" Linus Arver via GitGitGadget
2024-02-12 23:39         ` Christian Couder
2024-02-13 17:53           ` Linus Arver
2024-02-06  5:12       ` [PATCH v4 23/28] trailer: add new helper functions to API Linus Arver via GitGitGadget
2024-02-12 23:39         ` Christian Couder
2024-02-13 17:57           ` Linus Arver
2024-02-06  5:12       ` [PATCH v4 24/28] trailer_add_arg_item(): drop new_trailer_item usage Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 25/28] trailer: deprecate "new_trailer_item" struct from API Linus Arver via GitGitGadget
2024-02-06  5:12       ` [PATCH v4 26/28] trailer: unify "--trailer ..." arg handling Linus Arver via GitGitGadget
2024-02-12 23:39         ` Christian Couder
2024-02-13 18:12           ` Linus Arver
2024-02-06  5:12       ` [PATCH v4 27/28] trailer_set_*(): put out parameter at the end Linus Arver via GitGitGadget
2024-02-12 23:39         ` Christian Couder
2024-02-13 18:14           ` Linus Arver
2024-02-06  5:12       ` [PATCH v4 28/28] trailer: introduce "template" term for readability Linus Arver via GitGitGadget
2024-02-12 23:40         ` Christian Couder
2024-02-13 18:20           ` Linus Arver
2024-02-12 23:37       ` [PATCH v4 00/28] Enrich Trailer API Christian Couder
2024-02-13  0:11         ` Junio C Hamano
2024-02-13  6:55           ` Christian Couder
2024-02-13 17:30             ` Junio C Hamano
2024-02-13 20:25               ` Christian Couder
2024-02-16  2:25                 ` Linus Arver
2024-02-13 19:39         ` Linus Arver
2024-02-13 19:57           ` Junio C Hamano
2024-02-13 20:25             ` Kristoffer Haugsbakk
2024-02-13 20:55           ` Christian Couder
2024-02-16  2:17             ` Linus Arver
2024-02-16 23:09       ` [PATCH v5 0/9] " Linus Arver via GitGitGadget
2024-02-16 23:09         ` [PATCH v5 1/9] trailer: free trailer_info _after_ all related usage Linus Arver via GitGitGadget
2024-02-16 23:09         ` [PATCH v5 2/9] shortlog: add test for de-duplicating folded trailers Linus Arver via GitGitGadget
2024-02-16 23:09         ` [PATCH v5 3/9] trailer: prepare to expose functions as part of API Linus Arver via GitGitGadget
2024-02-19 21:31           ` Christian Couder
2024-02-29 22:33             ` Linus Arver
2024-02-29 23:21               ` Junio C Hamano
2024-02-29 23:53                 ` Linus Arver
2024-02-16 23:09         ` [PATCH v5 4/9] trailer: move interpret_trailers() to interpret-trailers.c Linus Arver via GitGitGadget
2024-02-16 23:09         ` [PATCH v5 5/9] trailer: start preparing for formatting unification Linus Arver via GitGitGadget
2024-02-19 21:31           ` Christian Couder
2024-02-29 22:53             ` Linus Arver
2024-02-16 23:09         ` [PATCH v5 6/9] trailer_info_get(): reorder parameters Linus Arver via GitGitGadget
2024-02-16 23:09         ` [PATCH v5 7/9] format_trailers(): use strbuf instead of FILE Linus Arver via GitGitGadget
2024-02-16 23:09         ` [PATCH v5 8/9] format_trailer_info(): move "fast path" to caller Linus Arver via GitGitGadget
2024-02-16 23:09         ` [PATCH v5 9/9] format_trailers_from_commit(): indirectly call trailer_info_get() Linus Arver via GitGitGadget
2024-02-19 21:32           ` Christian Couder
2024-02-29 23:00             ` Linus Arver
2024-02-19 21:40         ` [PATCH v5 0/9] Enrich Trailer API Christian Couder
2024-03-01  0:14         ` [PATCH v6 " Linus Arver via GitGitGadget
2024-03-01  0:14           ` [PATCH v6 1/9] trailer: free trailer_info _after_ all related usage Linus Arver via GitGitGadget
2024-03-01  0:14           ` [PATCH v6 2/9] shortlog: add test for de-duplicating folded trailers Linus Arver via GitGitGadget
2024-03-01  0:14           ` [PATCH v6 3/9] trailer: rename functions to use 'trailer' Linus Arver via GitGitGadget
2024-03-01  0:14           ` [PATCH v6 4/9] trailer: move interpret_trailers() to interpret-trailers.c Linus Arver via GitGitGadget
2024-03-01  0:14           ` [PATCH v6 5/9] trailer: reorder format_trailers_from_commit() parameters Linus Arver via GitGitGadget
2024-03-01  0:14           ` [PATCH v6 6/9] trailer_info_get(): reorder parameters Linus Arver via GitGitGadget
2024-03-01  0:14           ` [PATCH v6 7/9] format_trailers(): use strbuf instead of FILE Linus Arver via GitGitGadget
2024-03-01  0:14           ` [PATCH v6 8/9] format_trailer_info(): move "fast path" to caller Linus Arver via GitGitGadget
2024-03-01  0:14           ` [PATCH v6 9/9] format_trailers_from_commit(): indirectly call trailer_info_get() Linus Arver via GitGitGadget
2024-03-05 18:03           ` [PATCH v6 0/9] Enrich Trailer API Junio C Hamano
2024-03-05 19:07             ` Josh Steadmon
2024-03-05 19:41               ` Junio C Hamano
2024-03-06 14:41               ` Christian Couder
2024-03-06 16:59                 ` Junio C Hamano
2024-03-06 17:09                 ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqq34uunoag.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=chriscool@tuxfamily.org \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=linusa@google.com \
    --cc=nasamuffin@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).