Subject: Re: [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files

From: Junio C Hamano <[email-masked]>
Date: Tue, 19 Jul 2022 15:49:04 -0700

ZheNing Hu <[email-masked]> writes:

> Elijah Newren via GitGitGadget <[email-masked]> 于2022年6月19日周日 14:50写道：
>>
>> From: Elijah Newren <[email-masked]>
>>
>> When there are racy-dirty files, but no files are modified,
>> `git stash create` exits with unsuccessful status.  This causes merge
>> to fail.  Refresh the index first to avoid this problem.

Racily dirty?  Or just being stat-dirty is sufficient to cause the
"stash create" to fail?

> I just want to show what sence will meet this errors:
>
> 1. touch file
> 2. git add file
> 3. git stash push (user may do it before git merge)
> 4. touch file (update file but not update its content)
> 5. git merge (call git stash create and return 1)

I think, from the above reproduction recipe, that the breakage does
not depend on racily-clean index entries (i.e. file touched within
the same timestamp as the last write of the index without changing
their size).  So s/racy-dirty/stat-dirty/ (both on the title and the
body) would be a sufficient fix.

Thanks.