Hi Junio
On 14/08/2024 18:27, Junio C Hamano wrote:
Phillip Wood <phillip.wood123@xxxxxxxxx> writes:
Applying the stash should not fail because the rebase has not started
and so HEAD, the index and the worktree are unchanged since the stash
was created. If it does fail for some reason then apply_autostash()
creates a new entry under refs/stash. We definitely do want to remove
the directory otherwise we're left with the inconsistent state we're
tying to fix.
If it is not expected to fail 99% of times, it feels more prudent to
abort loudly without making further damage to lose information and
ask the user to check what happened in the working tree, rather than
blindly removing the clue to understand what went wrong. For
example, could the reason why applying the stash failed be because
the user forgot that the working tree was being used for rebasing
and mucked with its contents from say another terminal?
If the working tree has changed then the stash will still apply but
possibly with conflicts - the same thing can happen when the branch has
been successfully rebased. If there are conflicts then the stash is
saved in refs/stash as well. This code is just doing what we do at the
end of a successful rebase so I'm don't really understand what the issue
is. Looking at finish_rebase() we don't even check the return value of
apply_autostash() when applying the stash at the end of a successful rebase.
Best Wishes
Phillip
Thanks.