aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDerrick Stolee <stolee@gmail.com>2024-07-18 19:55:46 +0000
committerJunio C Hamano <gitster@pobox.com>2024-07-19 07:19:01 -0700
commit8fb6d11fade8301f0af1074fe250b9d79544cb18 (patch)
tree0ce1bff1d0cba13396ddaa14e547f1718c223de2
parentt5319: add failing test case for repack/expire (diff)
downloadgit-8fb6d11fade8301f0af1074fe250b9d79544cb18.tar.gz
git-8fb6d11fade8301f0af1074fe250b9d79544cb18.zip
midx-write: revert use of --stdin-packs
This reverts b7d6f23a171 (midx-write.c: use `--stdin-packs` when repacking, 2024-04-01) and then marks the test created in the previous change as passing. The fundamental issue with the reverted change is that the focus on pack-files separates the object selection from how the multi-pack-index selects a single pack-file for an object ID with multiple copies among the tracked pack-files. The change was made with the intention of improving delta compression in the resulting pack-file, but that can be resolved with the existing object list mechanism. There are other potential pitfalls of doing an object walk at this time if the repository is a blobless partial clone, and that will require additional testing on top of the one that changes here. Signed-off-by: Derrick Stolee <stolee@gmail.com> Acked-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to '')
-rw-r--r--midx-write.c18
-rwxr-xr-xt/t5319-multi-pack-index.sh2
2 files changed, 10 insertions, 10 deletions
diff --git a/midx-write.c b/midx-write.c
index 65e69d2de7..960cc46250 100644
--- a/midx-write.c
+++ b/midx-write.c
@@ -1474,8 +1474,7 @@ int midx_repack(struct repository *r, const char *object_dir, size_t batch_size,
repo_config_get_bool(r, "repack.usedeltabaseoffset", &delta_base_offset);
repo_config_get_bool(r, "repack.usedeltaislands", &use_delta_islands);
- strvec_pushl(&cmd.args, "pack-objects", "--stdin-packs", "--non-empty",
- NULL);
+ strvec_push(&cmd.args, "pack-objects");
strvec_pushf(&cmd.args, "%s/pack/pack", object_dir);
@@ -1499,15 +1498,16 @@ int midx_repack(struct repository *r, const char *object_dir, size_t batch_size,
}
cmd_in = xfdopen(cmd.in, "w");
- for (i = 0; i < m->num_packs; i++) {
- struct packed_git *p = m->packs[i];
- if (!p)
+
+ for (i = 0; i < m->num_objects; i++) {
+ struct object_id oid;
+ uint32_t pack_int_id = nth_midxed_pack_int_id(m, i);
+
+ if (!include_pack[pack_int_id])
continue;
- if (include_pack[i])
- fprintf(cmd_in, "%s\n", pack_basename(p));
- else
- fprintf(cmd_in, "^%s\n", pack_basename(p));
+ nth_midxed_object_oid(&oid, m, i);
+ fprintf(cmd_in, "%s\n", oid_to_hex(&oid));
}
fclose(cmd_in);
diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh
index 327376233c..5cce0be19e 100755
--- a/t/t5319-multi-pack-index.sh
+++ b/t/t5319-multi-pack-index.sh
@@ -1004,7 +1004,7 @@ test_expect_success 'repack --batch-size=<large> repacks everything' '
)
'
-test_expect_failure 'repack/expire loop' '
+test_expect_success 'repack/expire loop' '
git init repack-expire &&
test_when_finished "rm -fr repack-expire" &&
(