From: Junio C Hamano <gitster@pobox.com>
To: Phillip Wood <phillip.wood123@gmail.com>
Cc: git@vger.kernel.org, 重田一聖 <kazumasa.shigeta@kanamei.com>
Subject: Re: [PATCH 2/2] stash push: remove duplicate changes detection
Date: Wed, 07 Oct 2026 10:15:26 -0700 [thread overview]
Message-ID: <xmqqa4opa0up.fsf@gitster.g> (raw)
In-Reply-To: <725487d3-5a07-40c6-a603-990a661e0193@gmail.com> (Phillip Wood's message of "Wed, 7 Oct 2026 14:46:08 +0100")
Phillip Wood <phillip.wood123@gmail.com> writes:
>> Before the precontext of this hunk, repo_refresh_and_write_index()
>> is called to refresh the index. We used to leave early when
>> check_changes() saw no need to save. We no longer do so, and
>> instead keep going.
>>
>>> @@ -1743,8 +1737,15 @@ static int do_push_stash(const struct pathspec *ps, const char *stash_msg, int q
>>>
>>> if (stash_msg)
>>> strbuf_addstr(&stash_msg_buf, stash_msg);
>>> - if (do_create_stash(ps, &stash_msg_buf, include_untracked, patch_mode,
>>> - interactive_opts, only_staged, &info, &patch, quiet)) {
>>> + ret = do_create_stash(ps, &stash_msg_buf, include_untracked,
>>> + patch_mode, interactive_opts, only_staged, &info,
>>> + &patch, quiet);
>>
>> And we call do_create_stash(). The first thing it does is to call
>> repo_read_index_preload() and repo_refresh_and_write_index().
>>
>> Are we refreshing the index twice now, even though we know nothing
>> has changed in between, when we run "git stash push"?
>
> We've always been doing that when there is something to stash (which is
> the normal case).
So when there is nothing to stash, we only refreshed once but now
refreshing twice is not a regression?
> To avoid that we need to make the callers of do_create_stash()
> responsible for refreshing the index. At the moment
> create_stash() calls do_create_stash() without evening reading the
> index, but do_push_stash() needs to read the index to check if it
> the pathspec contains paths that don't match the index. That would
> also avoid calling preload_index() multiple times.
Yes, that exactly is the right direction. Then we can reduce the
number of check_changes() without increasing the number of
refreshes, right?
Thanks.
next prev parent reply other threads:[~2026-10-07 17:15 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-05 16:35 [PATCH 0/2] stash: stop checking for changes twice Phillip Wood
2026-10-05 16:35 ` [PATCH 1/2] stash create: remove duplicate changes detection Phillip Wood
2026-10-06 12:44 ` Junio C Hamano
2026-10-07 13:49 ` Phillip Wood
2026-10-05 16:35 ` [PATCH 2/2] stash push: " Phillip Wood
2026-10-06 14:27 ` Junio C Hamano
2026-10-07 13:46 ` Phillip Wood
2026-10-07 17:15 ` Junio C Hamano [this message]
2026-10-08 13:35 ` Phillip Wood
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqa4opa0up.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=kazumasa.shigeta@kanamei.com \
--cc=phillip.wood123@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.