odb: move initialization bit into `struct packfile_store`
The object database knows to skip re-initializing the list of packfiles in case it's already been initialized. Whether or not that is the case is tracked via a separate `initialized` bit that is stored in the object database. With the introduction of the `struct packfile_store` we have a better place to host this bit though. Move it accordingly. While at it, convert the field into a boolean now that we're allowed to use them in our code base. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>main
parent
535b7a667a
commit
3421cb56a8
6
odb.h
6
odb.h
|
|
@ -169,12 +169,6 @@ struct object_database {
|
||||||
unsigned long approximate_object_count;
|
unsigned long approximate_object_count;
|
||||||
unsigned approximate_object_count_valid : 1;
|
unsigned approximate_object_count_valid : 1;
|
||||||
|
|
||||||
/*
|
|
||||||
* Whether packed_git has already been populated with this repository's
|
|
||||||
* packs.
|
|
||||||
*/
|
|
||||||
unsigned packed_git_initialized : 1;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Submodule source paths that will be added as additional sources to
|
* Submodule source paths that will be added as additional sources to
|
||||||
* allow lookup of submodule objects via the main object database.
|
* allow lookup of submodule objects via the main object database.
|
||||||
|
|
|
||||||
|
|
@ -1027,7 +1027,7 @@ static void prepare_packed_git(struct repository *r)
|
||||||
{
|
{
|
||||||
struct odb_source *source;
|
struct odb_source *source;
|
||||||
|
|
||||||
if (r->objects->packed_git_initialized)
|
if (r->objects->packfiles->initialized)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
odb_prepare_alternates(r->objects);
|
odb_prepare_alternates(r->objects);
|
||||||
|
|
@ -1038,7 +1038,7 @@ static void prepare_packed_git(struct repository *r)
|
||||||
rearrange_packed_git(r);
|
rearrange_packed_git(r);
|
||||||
|
|
||||||
prepare_packed_git_mru(r);
|
prepare_packed_git_mru(r);
|
||||||
r->objects->packed_git_initialized = 1;
|
r->objects->packfiles->initialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void reprepare_packed_git(struct repository *r)
|
void reprepare_packed_git(struct repository *r)
|
||||||
|
|
@ -1060,7 +1060,7 @@ void reprepare_packed_git(struct repository *r)
|
||||||
odb_clear_loose_cache(source);
|
odb_clear_loose_cache(source);
|
||||||
|
|
||||||
r->objects->approximate_object_count_valid = 0;
|
r->objects->approximate_object_count_valid = 0;
|
||||||
r->objects->packed_git_initialized = 0;
|
r->objects->packfiles->initialized = false;
|
||||||
prepare_packed_git(r);
|
prepare_packed_git(r);
|
||||||
obj_read_unlock();
|
obj_read_unlock();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,12 @@ struct packfile_store {
|
||||||
* the store.
|
* the store.
|
||||||
*/
|
*/
|
||||||
struct packed_git *packs;
|
struct packed_git *packs;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Whether packfiles have already been populated with this store's
|
||||||
|
* packs.
|
||||||
|
*/
|
||||||
|
bool initialized;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue