Subject: Re: [PATCH 0/3] Integrate the sparse index with 'git apply' and 'git add -p/-i'

From: Junio C Hamano <[email-masked]>
Date: Thu, 08 May 2025 11:26:27 -0700

"Derrick Stolee via GitGitGadget" <[email-masked]> writes:

> The sparse index helps make some Git commands faster when using
> sparse-checkout in cone mode. However, not all code paths are aware that the
> index can have non-blob entries, so we are careful about rolling this
> feature out gradually. The cost of this rollout is that some commands are
> slower with the sparse index as they need to expand a sparse index into a
> full index in memory, which requires parsing tree objects to construct the
> full path list.
>
> This patch series focuses on the 'git add -p' command, which is slow with
> the sparse index for a couple of reasons, handled in the first two patches:
>
>  1. 'git add -p' uses 'git apply' as a subcommand and 'git apply' needs
>     integration with the sparse index. Luckily, we just need to add the repo
>     setting and appropriate tests to confirm it behaves as expected.
>  2. The interactive modes of 'git add' ('-p' and '-i') leave cmd_add()
>     before the code that sets the repo setting to allow for a sparse index.
>     Patch 2 fixes this and adds appropriate tests to confirm the behavior in
>     a sparse-checkout.
>
> A third patch adds a performance test to p2000-sparse-operations.sh to
> confirm that we are getting the performance improvement we expect:
>
>                         BASE    PATCH 1        PATCH 2
> ---------------------------------------------------------
> 2000.118: (full-v3)     0.80   0.84 +5.0%     0.84  +5.0%
> 2000.119: (full-v4)     0.76   0.79 +3.9%     0.80  +5.3%
> 2000.120: (sparse-v3)   2.09   1.39 -33.5%    0.07 -96.7%
> 2000.121: (sparse-v4)   2.09   1.39 -33.5%    0.07 -96.7%
>
>
> Thanks, -Stolee

As always, it is delight to read a well-written cover letter that
naturally convinces readers why the series is worth reading ;-)

Thanks.