Skip to content

Commit 8f89281

Browse files
pks-tgitster
authored andcommitted
object-name: convert to use packfile_store_get_all_packs()
When searching for abbreviated or when trying to disambiguate object IDs we do this in two steps: 1. We search through the multi-pack index. 2. We search through all packfiles not part of any multi-pack index. The second step uses `packfile_store_get_packs()`, which knows to skip loading any packfiles that are indexed by an MIDX; this is exactly what we want. But that function is somewhat problematic, as its behaviour is stateful and is influenced by `packfile_store_get_all_packs()`. This function basically does the same as `packfile_store_get_packs()`, but in addition it also loads all packfiles indexed by an MIDX. The problem here is that both of these functions act on the same linked list of packfiles, and thus depending on whether or not `get_all_packs()` was called the result returned by `get_packs()` will be different. Consequently, all callers of `get_packs()` need to be prepared to see MIDX'd packs even though these should in theory be excluded. This interface is confusing and thus potentially dangerous, which is why we're converting all callers of `get_packs()` to use `get_all_packs()` instead. Do so for the above functions in "object-name.c". As explained, we already know to skip any MIDX'd packs in both `find_abbrev_len_packed()` and `find_short_packed_object()`, so it's fine to start loading MIDX'd packfiles. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 657fa3a commit 8f89281

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

object-name.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ static void find_short_packed_object(struct disambiguate_state *ds)
213213
unique_in_midx(m, ds);
214214
}
215215

216-
for (p = packfile_store_get_packs(ds->repo->objects->packfiles); p && !ds->ambiguous;
216+
for (p = packfile_store_get_all_packs(ds->repo->objects->packfiles); p && !ds->ambiguous;
217217
p = p->next)
218218
unique_in_pack(p, ds);
219219
}
@@ -805,7 +805,7 @@ static void find_abbrev_len_packed(struct min_abbrev_data *mad)
805805
find_abbrev_len_for_midx(m, mad);
806806
}
807807

808-
for (p = packfile_store_get_packs(mad->repo->objects->packfiles); p; p = p->next)
808+
for (p = packfile_store_get_all_packs(mad->repo->objects->packfiles); p; p = p->next)
809809
find_abbrev_len_for_pack(p, mad);
810810
}
811811

0 commit comments

Comments
 (0)