mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
Merge branch 'ps/object-store-midx'
Redefine where the multi-pack-index sits in the object subsystem, which recently was restructured to allow multiple backends that support a single object source that belongs to one repository. A midx does span mulitple "object sources". * ps/object-store-midx: midx: remove now-unused linked list of multi-pack indices packfile: stop using linked MIDX list in `get_all_packs()` packfile: stop using linked MIDX list in `find_pack_entry()` packfile: refactor `get_multi_pack_index()` to work on sources midx: stop using linked list when closing MIDX packfile: refactor `prepare_packed_git_one()` to work on sources midx: start tracking per object database source
This commit is contained in:
@@ -199,16 +199,20 @@ static void unique_in_pack(struct packed_git *p,
|
||||
|
||||
static void find_short_packed_object(struct disambiguate_state *ds)
|
||||
{
|
||||
struct multi_pack_index *m;
|
||||
struct odb_source *source;
|
||||
struct packed_git *p;
|
||||
|
||||
/* Skip, unless oids from the storage hash algorithm are wanted */
|
||||
if (ds->bin_pfx.algo && (&hash_algos[ds->bin_pfx.algo] != ds->repo->hash_algo))
|
||||
return;
|
||||
|
||||
for (m = get_multi_pack_index(ds->repo); m && !ds->ambiguous;
|
||||
m = m->next)
|
||||
unique_in_midx(m, ds);
|
||||
odb_prepare_alternates(ds->repo->objects);
|
||||
for (source = ds->repo->objects->sources; source && !ds->ambiguous; source = source->next) {
|
||||
struct multi_pack_index *m = get_multi_pack_index(source);
|
||||
if (m)
|
||||
unique_in_midx(m, ds);
|
||||
}
|
||||
|
||||
for (p = get_packed_git(ds->repo); p && !ds->ambiguous;
|
||||
p = p->next)
|
||||
unique_in_pack(p, ds);
|
||||
@@ -793,11 +797,15 @@ static void find_abbrev_len_for_pack(struct packed_git *p,
|
||||
|
||||
static void find_abbrev_len_packed(struct min_abbrev_data *mad)
|
||||
{
|
||||
struct multi_pack_index *m;
|
||||
struct packed_git *p;
|
||||
|
||||
for (m = get_multi_pack_index(mad->repo); m; m = m->next)
|
||||
find_abbrev_len_for_midx(m, mad);
|
||||
odb_prepare_alternates(mad->repo->objects);
|
||||
for (struct odb_source *source = mad->repo->objects->sources; source; source = source->next) {
|
||||
struct multi_pack_index *m = get_multi_pack_index(source);
|
||||
if (m)
|
||||
find_abbrev_len_for_midx(m, mad);
|
||||
}
|
||||
|
||||
for (p = get_packed_git(mad->repo); p; p = p->next)
|
||||
find_abbrev_len_for_pack(p, mad);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user