This is the first "payoff" series in the sparse-index work. It makes 'git status' and 'git add' very fast when a sparse-index is enabled on a repository with cone-mode sparse-checkout (and a small populated set). This is based on ds/sparse-index-protections AND mt/add-rm-sparse-checkout. The latter branch is needed because it changes the behavior of 'git add' around sparse entries, which changes the expectations of a test added in patch 1. The approach here is to audit the places where ensure_full_index() pops up while doing normal commands with pathspecs within the sparse-checkout definition. Each of these are checked and tested. In the end, the sparse-index is integrated with these features: * git status * git add -A * git add . (and other pathspecs) * FS Monitor index extension. The performance tests in p2000-sparse-operations.sh improve by 95% or more, even when compared with the full-index cases, not just the sparse-index cases that previously had extra overhead. Hopefully this is the first example of how ds/sparse-index-protections has done the basic work to do these conversions safely, making them look easier than they seemed when starting this adventure. Thanks, -Stolee Derrick Stolee (10): t1092: add tests for status/add and sparse files unpack-trees: make sparse aware dir.c: accept a directory as part of cone-mode patterns status: skip sparse-checkout percentage with sparse-index status: use sparse-index throughout dir: use expand_to_path() for sparse directories add: allow operating on a sparse-only index pathspec: stop calling ensure_full_index t7519: add sparse directories to FS monitor tests fsmonitor: test with sparse index builtin/add.c | 3 + builtin/commit.c | 3 + dir.c | 5 ++ dir.h | 2 +- pathspec.c | 2 - preload-index.c | 2 + read-cache.c | 5 +- t/t1092-sparse-checkout-compatibility.sh | 73 +++++++++++++++++++++++- t/t7519-status-fsmonitor.sh | 65 +++++++++++++++++++++ unpack-trees.c | 24 +++++++- wt-status.c | 14 ++++- wt-status.h | 1 + 12 files changed, 186 insertions(+), 13 deletions(-) base-commit: f723f370c89ad61f4f40aabfd3540b1ce19c00e5 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-932%2Fderrickstolee%2Fsparse-index%2Fstatus-and-add-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-932/derrickstolee/sparse-index/status-and-add-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/932 -- gitgitgadget