repack: extract `locate_existing_pack()` helper

Factor out the lookup from `existing_packs_retain_cruft()` that converts
a pack basename to a `string_list_item` into a reusable static helper
function, `locate_existing_pack()`.

A subsequent commit will introduce a new function which will need to
perform this same lookup against a different `string_list`.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
seen
Taylor Blau 2026-06-26 15:02:17 -04:00 committed by Junio C Hamano
parent 1a9c49e4bb
commit d65798abb7
1 changed files with 16 additions and 5 deletions

View File

@ -226,21 +226,32 @@ static void existing_packs_mark_for_deletion_1(const struct git_hash_algo *algop
}
}

void existing_packs_retain_cruft(struct existing_packs *existing,
struct packed_git *cruft)
static struct string_list_item *locate_existing_pack(struct string_list *list,
struct packed_git *p)
{
struct strbuf buf = STRBUF_INIT;
struct string_list_item *item;

strbuf_addstr(&buf, pack_basename(cruft));
strbuf_addstr(&buf, pack_basename(p));
strbuf_strip_suffix(&buf, ".pack");

item = string_list_lookup(&existing->cruft_packs, buf.buf);
item = string_list_lookup(list, buf.buf);

strbuf_release(&buf);

return item;
}

void existing_packs_retain_cruft(struct existing_packs *existing,
struct packed_git *cruft)
{
struct string_list_item *item;

item = locate_existing_pack(&existing->cruft_packs, cruft);
if (!item)
BUG("could not find cruft pack '%s'", pack_basename(cruft));

existing_packs_mark_retained(item);
strbuf_release(&buf);
}

void existing_packs_mark_for_deletion(struct existing_packs *existing,