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