git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
PWPhillip Wood <phillip.wood123@gmail.com>
Date
May 14, 2025, 15:16 UTC
Message-ID
<c1f7a9d6-4a44-4c00-bf26-6852819361e9@gmail.com>
In-Reply-To
<pull.1914.git.1746579320.gitgitgadget@gmail.com>
Hi Stolee
On 07/05/2025 01:55, Derrick Stolee via GitGitGadget wrote:
Show 18 quoted lines
> 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.

This made me wonder about the other commands that take "--patch" like checkout and reset. Do you know how well they handle the sparse index? They'll all benefit from the changes to git apply in this series but I was wondering if they need any further changes.

Best Wishes
Phillip
Show 29 quoted lines
> 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
> 
> Derrick Stolee (3):
>    apply: integrate with the sparse index
>    git add: make -p/-i aware of sparse index
>    p2000: add performance test for 'git add -p'
> 
>   builtin/add.c                            |   7 +-
>   builtin/apply.c                          |   7 +-
>   t/perf/p2000-sparse-operations.sh        |   1 +
>   t/t1092-sparse-checkout-compatibility.sh | 102 +++++++++++++++++++++++
>   4 files changed, 113 insertions(+), 4 deletions(-)
> 
> 
> base-commit: 6c0bd1fc70efaf053abe4e57c976afdc72d15377
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1914%2Fderrickstolee%2Fapply-sparse-index-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1914/derrickstolee/apply-sparse-index-v1
> Pull-Request: https://github.com/gitgitgadget/git/pull/1914
Previous: Junio C HamanoNext: Derrick Stolee
Message 11 of 22 in “Integrate the sparse index with 'git apply' and 'git add -p/-i'”
  1. 0/3 Integrate the sparse index with 'git apply' and 'git add -p/-i'Derrick Stolee via GitGitGadget, May 7, 2025
  2. 1/3 apply: integrate with the sparse indexDerrick Stolee via GitGitGadget, May 7, 2025
  3. Elijah NewrenMay 10, 2025
  4. Derrick StoleeMay 16, 2025
  5. 2/3 git add: make -p/-i aware of sparse indexDerrick Stolee via GitGitGadget, May 7, 2025
  6. Elijah NewrenMay 10, 2025
  7. Derrick StoleeMay 16, 2025
  8. 3/3 p2000: add performance test for 'git add -p'Derrick Stolee via GitGitGadget, May 7, 2025
  9. Elijah NewrenMay 10, 2025
  10. Junio C HamanoMay 8, 2025
  11. Phillip WoodMay 14, 2025
  12. Derrick StoleeMay 16, 2025
  13. phillip.wood123@gmail.comMay 20, 2025
  14. 0/4 Integrate the sparse index with 'git apply' and interactive add, checkout, and resetDerrick Stolee via GitGitGadget, May 16, 2025
  15. 1/4 apply: integrate with the sparse indexDerrick Stolee via GitGitGadget, May 16, 2025
  16. 2/4 git add: make -p/-i aware of sparse indexDerrick Stolee via GitGitGadget, May 16, 2025
  17. 3/4 reset: integrate sparse index with --patchDerrick Stolee via GitGitGadget, May 16, 2025
  18. Elijah NewrenMay 16, 2025
  19. 4/4 p2000: add performance test for patch-mode commandsDerrick Stolee via GitGitGadget, May 16, 2025
  20. Elijah NewrenMay 16, 2025
  21. Derrick StoleeMay 16, 2025
  22. Junio C HamanoMay 16, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.