Subject: Re: [PATCH v4 05/25] midx: clear auxiliary .rev after replacing the MIDX

From: Junio C Hamano <[email-masked]>
Date: Tue, 24 Aug 2021 13:27:34 -0700

Taylor Blau <[email-masked]> writes:

> When writing a new multi-pack index, write_midx_internal() attempts to
> clean up any auxiliary files (currently just the MIDX's `.rev` file, but
> soon to include a `.bitmap`, too) corresponding to the MIDX it's
> replacing.
>
> This step should happen after the new MIDX is written into place, since
> doing so beforehand means that the old MIDX could be read without its
> corresponding .rev file.
>
> Signed-off-by: Taylor Blau <[email-masked]>
> ---
>  midx.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/midx.c b/midx.c
> index 321c6fdd2f..73b199ca49 100644
> --- a/midx.c
> +++ b/midx.c
> @@ -1086,10 +1086,11 @@ static int write_midx_internal(const char *object_dir, struct multi_pack_index *
>  
>  	if (flags & MIDX_WRITE_REV_INDEX)
>  		write_midx_reverse_index(midx_name, midx_hash, &ctx);
> -	clear_midx_files_ext(the_repository, ".rev", midx_hash);
>  
>  	commit_lock_file(&lk);
>  
> +	clear_midx_files_ext(the_repository, ".rev", midx_hash);

This needs to take object_dir into account, no?

There are a few more calls to clear_midx_files_ext() added in 15/25
and they use the_repository, too.

>  cleanup:
>  	for (i = 0; i < ctx.nr; i++) {
>  		if (ctx.info[i].p) {