summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2026-04-07 14:59:28 -0700
committerJunio C Hamano <gitster@pobox.com>2026-04-07 14:59:28 -0700
commitf1743ad69a492d1ca3773bfdddf7f5ffd278c19b (patch)
tree222ad49ff701cc4f8753e854c8f37bb893763029
parentb66c97cc644ca3a3f42283cfc575fd9709f30835 (diff)
parent339eba65a7f8aa596199e04f45683c48a1562b9c (diff)
downloadgit-f1743ad69a492d1ca3773bfdddf7f5ffd278c19b.tar.xz
Merge branch 'th/backfill-auto-detect-sparseness-fix'
"git backfill" is capable of auto-detecting a sparsely checked out working tree, which was broken. * th/backfill-auto-detect-sparseness-fix: backfill: auto-detect sparse-checkout from config
-rw-r--r--builtin/backfill.c2
-rwxr-xr-xt/t5620-backfill.sh15
2 files changed, 16 insertions, 1 deletions
diff --git a/builtin/backfill.c b/builtin/backfill.c
index 2c5ce56fb7..d794dd842f 100644
--- a/builtin/backfill.c
+++ b/builtin/backfill.c
@@ -119,7 +119,7 @@ int cmd_backfill(int argc, const char **argv, const char *prefix, struct reposit
.repo = repo,
.current_batch = OID_ARRAY_INIT,
.min_batch_size = 50000,
- .sparse = 0,
+ .sparse = -1,
.revs = REV_INFO_INIT,
};
struct option options[] = {
diff --git a/t/t5620-backfill.sh b/t/t5620-backfill.sh
index 2c347a91fe..f3b5e39493 100755
--- a/t/t5620-backfill.sh
+++ b/t/t5620-backfill.sh
@@ -175,6 +175,21 @@ test_expect_success 'backfill --sparse' '
test_line_count = 0 missing
'
+test_expect_success 'backfill auto-detects sparse-checkout from config' '
+ git clone --sparse --filter=blob:none \
+ --single-branch --branch=main \
+ "file://$(pwd)/srv.bare" backfill-auto-sparse &&
+
+ git -C backfill-auto-sparse rev-list --quiet --objects --missing=print HEAD >missing &&
+ test_line_count = 44 missing &&
+
+ GIT_TRACE2_EVENT="$(pwd)/auto-sparse-trace" git \
+ -C backfill-auto-sparse backfill &&
+
+ test_trace2_data promisor fetch_count 4 <auto-sparse-trace &&
+ test_trace2_data path-walk paths 5 <auto-sparse-trace
+'
+
test_expect_success 'backfill --sparse without cone mode (positive)' '
git clone --no-checkout --filter=blob:none \
--single-branch --branch=main \