15
{
16
struct packfile_list_entry *l;
17
18
- odb_source_packed_prepare(store);
18
+ odb_source_prepare(&store->base, 0);
19
if (store->midx && fill_midx_entry(store->midx, oid, e))
20
return 1;
21
47
* been added since the last time we have prepared the packfile store.
48
*/
49
if (flags & OBJECT_INFO_SECOND_READ)
50
- odb_source_reprepare(source);
50
+ odb_source_prepare(source, ODB_PREPARE_FLUSH_CACHES);
51
52
if (!find_pack_entry(packed, oid, &e))
53
return 1;
668
return -1;
669
}
670
671
-void odb_source_packed_prepare(struct odb_source_packed *source)
671
+static void odb_source_packed_prepare(struct odb_source *source,
672
+ enum odb_prepare_flags flags)
673
{
673
- if (source->initialized)
674
+ struct odb_source_packed *packed = odb_source_packed_downcast(source);
675
+
676
+ if (flags & ODB_PREPARE_FLUSH_CACHES)
677
+ packed->initialized = false;
678
+ if (packed->initialized)
679
return;
680
676
- prepare_multi_pack_index_one(source);
677
- prepare_packed_git_one(source);
681
+ prepare_multi_pack_index_one(packed);
682
+ prepare_packed_git_one(packed);
683
679
- sort_packs(&source->packs.head, sort_pack);
680
- for (struct packfile_list_entry *e = source->packs.head; e; e = e->next)
684
+ sort_packs(&packed->packs.head, sort_pack);
685
+ for (struct packfile_list_entry *e = packed->packs.head; e; e = e->next)
686
if (!e->next)
682
- source->packs.tail = e;
687
+ packed->packs.tail = e;
688
684
- source->initialized = true;
685
-}
686
-
687
-static void odb_source_packed_reprepare(struct odb_source *source)
688
-{
689
- struct odb_source_packed *packed = odb_source_packed_downcast(source);
690
- packed->initialized = false;
691
- odb_source_packed_prepare(packed);
689
+ packed->initialized = true;
690
}
691
692
static void odb_source_packed_reparent(const char *name UNUSED,
742
743
packed->base.free = odb_source_packed_free;
744
packed->base.close = odb_source_packed_close;
747
- packed->base.reprepare = odb_source_packed_reprepare;
745
+ packed->base.prepare = odb_source_packed_prepare;
746
packed->base.read_object_info = odb_source_packed_read_object_info;
747
packed->base.read_object_stream = odb_source_packed_read_object_stream;
748
packed->base.for_each_object = odb_source_packed_for_each_object;