Subject: Re: [PATCH v4 3/4] pack-bitmap.c: break out of the bitmap loop early if not tracing

From: Junio C Hamano <[email-masked]>
Date: Tue, 22 Nov 2022 08:27:19 +0900

Teng Long <[email-masked]> writes:

> From: Jeff King <[email-masked]>
>
> When we successfully open a bitmap, we will continue to try to open
> other packs, and when trace2 is enabled, we will report any subsequent
> bitmap ignored information in the log. So when we find that trace2 is
> not enabled, we can actually terminate the loop early.

The above took me a few reads to understand what it wants to say,
probably because the "and when trace2 is enabled" comes a bit too
late to explain why "try to open other" is done.  After reading it a
few times, here is what I think it wants to say:

    After opening a bitmap successfully, we try opening others only
    because we want to report that other bitmap files are ignored in
    the trace2 log.  When trace2 is not enabled, we do not have to
    do any of that.

>
> Signed-off-by: Jeff King <[email-masked]>
> Signed-off-by: Teng Long <[email-masked]>
> ---
>  pack-bitmap.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/pack-bitmap.c b/pack-bitmap.c
> index aaa2d9a104..3b6c2f804a 100644
> --- a/pack-bitmap.c
> +++ b/pack-bitmap.c
> @@ -527,8 +527,15 @@ static int open_pack_bitmap(struct repository *r,
>  	assert(!bitmap_git->map);
>  
>  	for (p = get_all_packs(r); p; p = p->next) {
> -		if (open_pack_bitmap_1(bitmap_git, p) == 0)
> +		if (open_pack_bitmap_1(bitmap_git, p) == 0) {
>  			ret = 0;
> +			/*
> +			 * The only reason to keep looking is to report
> +			 * duplicates.
> +			 */
> +			if (!trace2_is_enabled())
> +				break;
> +		}
>  	}
>  
>  	return ret;