From: Phillip Wood Date: Wed, 15 Apr 2026 09:34:32 GMT Subject: Re: [PATCH] checkout: add --autostash option for branch switching Message-ID: <516b88c8-ebc2-4d28-9a00-4149426ad43c@gmail.com> In-Reply-To: <20260415081900.86956-1-haraldnordgren@gmail.com> On 15/04/2026 09:19, Harald Nordgren wrote: >>>> + strbuf_addf(&autostash_msg, >>>> + "autostash while switching to '%s'", >>>> + new_branch_info->name); >>>> + create_autostash_ref_with_msg_silent(the_repository, >>>> + "CHECKOUT_AUTOSTASH_HEAD", >>> >>> It's a shame we have to create a ref here. MERGE_AUTOSTASH exists so >>> that "git merge --continue" can apply the stash once the user has >>> resolved any merge conflicts. We don't have that problem here because >>> there is no user interaction and we could just hold onto the stash oid >>> in a variable. >> >> I don't know how to actually do that. Maybe better to do later? > > A gave this a try, but it becomes a very big change. Or maybe I'm missing > some key knowledge here. Maybe leave that for now then >>>> + autostash_msg.buf); >>>> + created_autostash = 1; >>>> + ret = merge_working_tree(opts, &old_branch_info, new_branch_info, &writeout_error); >>>> + } >>>> if (ret) { >>> >>> I'm confused by this - if we stash then don't we expect the call to >>> unpack_trees() in merge_working_tree() to succeed and therefore return >>> 0? In that case we apply the stash lower down so that's fine. >>> If opts->merge is false then we should not be trying to apply the >>> stash when merge_working_tree() fails. >> >> Same here, I'm not sure how to get this to work. Maybe better to do later? > > I think I succeeded with this one. This one definitely needs fixing but it should be simple to do as I think it is just a logic error. We should not be trying to re-apply the stash unless we created it and we can check "created_autostash" to do that. Thanks Phillip > > > Harald