mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
object-file: introduce struct odb_source_loose
Currently, all state that relates to loose objects is held directly by the `struct odb_source`. Introduce a new `struct odb_source_loose` to hold the state instead so that it is entirely self-contained. This structure will eventually morph into the backend for accessing loose objects. As such, this is part of the refactorings to introduce pluggable object databases. 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
0cc12dedef
commit
ece43d9dc7
@@ -1995,3 +1995,16 @@ void object_file_transaction_commit(struct odb_transaction *transaction)
|
||||
transaction->odb->transaction = NULL;
|
||||
free(transaction);
|
||||
}
|
||||
|
||||
struct odb_source_loose *odb_source_loose_new(struct odb_source *source)
|
||||
{
|
||||
struct odb_source_loose *loose;
|
||||
CALLOC_ARRAY(loose, 1);
|
||||
loose->source = source;
|
||||
return loose;
|
||||
}
|
||||
|
||||
void odb_source_loose_free(struct odb_source_loose *loose)
|
||||
{
|
||||
free(loose);
|
||||
}
|
||||
|
||||
@@ -18,6 +18,13 @@ int index_path(struct index_state *istate, struct object_id *oid, const char *pa
|
||||
|
||||
struct odb_source;
|
||||
|
||||
struct odb_source_loose {
|
||||
struct odb_source *source;
|
||||
};
|
||||
|
||||
struct odb_source_loose *odb_source_loose_new(struct odb_source *source);
|
||||
void odb_source_loose_free(struct odb_source_loose *loose);
|
||||
|
||||
/*
|
||||
* Populate and return the loose object cache array corresponding to the
|
||||
* given object ID.
|
||||
|
||||
2
odb.c
2
odb.c
@@ -151,6 +151,7 @@ struct odb_source *odb_source_new(struct object_database *odb,
|
||||
source->odb = odb;
|
||||
source->local = local;
|
||||
source->path = xstrdup(path);
|
||||
source->loose = odb_source_loose_new(source);
|
||||
|
||||
return source;
|
||||
}
|
||||
@@ -368,6 +369,7 @@ struct odb_source *odb_set_temporary_primary_source(struct object_database *odb,
|
||||
static void odb_source_free(struct odb_source *source)
|
||||
{
|
||||
free(source->path);
|
||||
odb_source_loose_free(source->loose);
|
||||
odb_clear_loose_cache(source);
|
||||
loose_object_map_clear(&source->loose_map);
|
||||
free(source);
|
||||
|
||||
3
odb.h
3
odb.h
@@ -48,6 +48,9 @@ struct odb_source {
|
||||
/* Object database that owns this object source. */
|
||||
struct object_database *odb;
|
||||
|
||||
/* Private state for loose objects. */
|
||||
struct odb_source_loose *loose;
|
||||
|
||||
/*
|
||||
* Used to store the results of readdir(3) calls when we are OK
|
||||
* sacrificing accuracy due to races for speed. That includes
|
||||
|
||||
Reference in New Issue
Block a user