mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
packfile: introduce a new struct packfile_store
Information about an object database's packfiles is currently
distributed across two different structures:
- `struct packed_git` contains the `next` pointer as well as the
`mru_head`, both of which serve to store the list of packfiles.
- `struct object_database` contains several fields that relate to the
packfiles.
So we don't really have a central data structure that tracks our
packfiles, and consequently responsibilities aren't always clear cut.
A consequence for the upcoming pluggable object databases is that this
makes it very hard to move management of packfiles from the object
database level down into the object database source.
Introduce a new `struct packfile_store` which is about to become the
single source of truth for managing packfiles. Right now this data
structure doesn't yet contain anything, but in subsequent patches we
will move all data structures that relate to packfiles and that are
currently contained in `struct object_database` into this new home.
Note that this is only a first step: most importantly, we won't (yet)
move the `struct packed_git::next` pointer around. This will happen in a
subsequent patch series though so that `struct packed_git` will really
only host information about the specific packfile it represents.
Further note that the new structure still sits at the wrong level at the
end of this patch series: as mentioned, it should eventually sit at the
level of the object database source, not at the object database level.
But introducing the packfile store now already makes it way easier to
eventually push down the now-selfcontained data structure by one level.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
0b71555742
commit
b7983adb51
13
packfile.c
13
packfile.c
@@ -2332,3 +2332,16 @@ int parse_pack_header_option(const char *in, unsigned char *out, unsigned int *l
|
||||
*len = hdr - out;
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct packfile_store *packfile_store_new(struct object_database *odb)
|
||||
{
|
||||
struct packfile_store *store;
|
||||
CALLOC_ARRAY(store, 1);
|
||||
store->odb = odb;
|
||||
return store;
|
||||
}
|
||||
|
||||
void packfile_store_free(struct packfile_store *store)
|
||||
{
|
||||
free(store);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user