Subject: Re: [PATCH v2] read-cache: report lock error when refreshing index

From: Junio C Hamano <[email-masked]>
Date: Mon, 07 Jul 2025 11:01:12 -0700

Han Young <[email-masked]> writes:

> In the repo_refresh_and_write_index of read-cache.c, we return -1 to
> indicate that writing the index to disk failed.
> However, callers do not use this information. Commands such as stash print
>   "could not write index"
> and then exit, which does not help to discover the exact problem.
>
> We can let repo_hold_locked_index print the error message if the locking
> failed.
>
> Signed-off-by: Han Young <[email-masked]>
> ---
> Changes since v1:
> also check the "could not write index" error output
>
>  read-cache.c     |  2 +-
>  t/t3903-stash.sh | 18 ++++++------------
>  2 files changed, 7 insertions(+), 13 deletions(-)
>
> diff --git a/read-cache.c b/read-cache.c
> index c0bb760ad..50e842bfa 100644
> --- a/read-cache.c
> +++ b/read-cache.c
> @@ -1456,7 +1456,7 @@ int repo_refresh_and_write_index(struct repository *repo,
>  	struct lock_file lock_file = LOCK_INIT;
>  	int fd, ret = 0;
>  
> -	fd = repo_hold_locked_index(repo, &lock_file, 0);
> +	fd = repo_hold_locked_index(repo, &lock_file, gentle ? 0 : LOCK_REPORT_ON_ERROR);

Let's wrap this line to stay under 80-columns, i.e.

	fd = repo_hold_locked_index(repo, &lock_file,
				    gentle ? 0 : LOCK_REPORT_ON_ERROR);

No need to resend, as I've done so locally while applying.