[PATCH 04/11] midx: move `expire_midx_packs` to midx-write.c
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Mar 25, 2024, 17:24 UTC
- Message-ID
- <e2b6459aa8f4ecedf9a7b1df3e7e56739254a8d1.1711387439.git.me@ttaylorr.com>
- In-Reply-To
- <cover.1711387439.git.me@ttaylorr.com>
Move `expire_midx_packs()`, the main function which implements the sub-command 'git multi-pack-index expire' into midx-write.c.
Similar to the previous patch, this patch does not introduce any behavioral changes and is best viewed with `--color-moved`.
Signed-off-by: Taylor Blau <me@ttaylorr.com> --- midx-write.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ midx.c | 57 --------------------------------------------------- 2 files changed, 58 insertions(+), 57 deletions(-)
diff --git a/midx-write.c b/midx-write.c index 6dd58be7e0..d679e0a131 100644 --- a/midx-write.c +++ b/midx-write.c @@ -3,6 +3,7 @@ #include "hex.h" #include "packfile.h" #include "midx.h" +#include "progress.h" #include "run-command.h" #include "pack-bitmap.h" #include "revision.h" @@ -17,6 +18,63 @@ extern int write_midx_internal(const char *object_dir, extern struct multi_pack_index *lookup_multi_pack_index(struct repository *r, const char *object_dir); +int expire_midx_packs(struct repository *r, const char *object_dir, unsigned flags) +{ + uint32_t i, *count, result = 0; + struct string_list packs_to_drop = STRING_LIST_INIT_DUP; + struct multi_pack_index *m = lookup_multi_pack_index(r, object_dir); + struct progress *progress = NULL; + + if (!m) + return 0; + + CALLOC_ARRAY(count, m->num_packs); + + if (flags & MIDX_PROGRESS) + progress = start_delayed_progress(_("Counting referenced objects"), + m->num_objects); + for (i = 0; i < m->num_objects; i++) { + int pack_int_id = nth_midxed_pack_int_id(m, i); + count[pack_int_id]++; + display_progress(progress, i + 1); + } + stop_progress(&progress); + + if (flags & MIDX_PROGRESS) + progress = start_delayed_progress(_("Finding and deleting unreferenced packfiles"), + m->num_packs); + for (i = 0; i < m->num_packs; i++) { + char *pack_name; + display_progress(progress, i + 1); + + if (count[i]) + continue; + + if (prepare_midx_pack(r, m, i)) + continue; + + if (m->packs[i]->pack_keep || m->packs[i]->is_cruft) + continue; + + pack_name = xstrdup(m->packs[i]->pack_name); + close_pack(m->packs[i]); + + string_list_insert(&packs_to_drop, m->pack_names[i]); + unlink_pack_path(pack_name, 0); + free(pack_name); + } + stop_progress(&progress); + + free(count); + + if (packs_to_drop.nr) + result = write_midx_internal(object_dir, NULL, &packs_to_drop, NULL, NULL, flags); + + string_list_clear(&packs_to_drop, 0); + + return result; +} + struct repack_info { timestamp_t mtime; uint32_t referenced_objects; diff --git a/midx.c b/midx.c index 3bd8c58642..5936bc5b9e 100644 --- a/midx.c +++ b/midx.c @@ -1998,60 +1998,3 @@ int verify_midx_file(struct repository *r, const char *object_dir, unsigned flag return verify_midx_error; } - -int expire_midx_packs(struct repository *r, const char *object_dir, unsigned flags) -{ - uint32_t i, *count, result = 0; - struct string_list packs_to_drop = STRING_LIST_INIT_DUP; - struct multi_pack_index *m = lookup_multi_pack_index(r, object_dir); - struct progress *progress = NULL; - - if (!m) - return 0; - - CALLOC_ARRAY(count, m->num_packs); - - if (flags & MIDX_PROGRESS) - progress = start_delayed_progress(_("Counting referenced objects"), - m->num_objects); - for (i = 0; i < m->num_objects; i++) { - int pack_int_id = nth_midxed_pack_int_id(m, i); - count[pack_int_id]++; - display_progress(progress, i + 1); - } - stop_progress(&progress); - - if (flags & MIDX_PROGRESS) - progress = start_delayed_progress(_("Finding and deleting unreferenced packfiles"), - m->num_packs); - for (i = 0; i < m->num_packs; i++) { - char *pack_name; - display_progress(progress, i + 1); - - if (count[i]) - continue; - - if (prepare_midx_pack(r, m, i)) - continue; - - if (m->packs[i]->pack_keep || m->packs[i]->is_cruft) - continue; - - pack_name = xstrdup(m->packs[i]->pack_name); - close_pack(m->packs[i]); - - string_list_insert(&packs_to_drop, m->pack_names[i]); - unlink_pack_path(pack_name, 0); - free(pack_name); - } - stop_progress(&progress); - - free(count); - - if (packs_to_drop.nr) - result = write_midx_internal(object_dir, NULL, &packs_to_drop, NULL, NULL, flags); - - string_list_clear(&packs_to_drop, 0); - - return result; -}
-- 2.44.0.290.g736be63234b