Re: [PATCH] rebase: apply and cleanup autostash when rebase fails to start
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Aug 15, 2024, 09:47 UTC
- Message-ID
- <0ca8ce79-6c9f-4836-99d6-b2a86dfe4109@gmail.com>
- In-Reply-To
- <xmqq8qwzypz2.fsf@gitster.g>
Hi Junio
On 14/08/2024 18:27, Junio C Hamano wrote:
Show 16 quoted lines
> Phillip Wood <phillip.wood123@gmail.com> 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. >