diff options
| author | Patrick Steinhardt <ps@pks.im> | 2026-03-05 15:19:45 +0100 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2026-03-05 11:45:15 -0800 |
| commit | 87842f68352040858f581b64509932fb91c64f0f (patch) | |
| tree | c94012f8d76c89ea5750289c504a7d179ac8e75a /odb/source.h | |
| parent | 7e0aa0ab803405076b82ca66d328d314d17870ac (diff) | |
| download | git-87842f68352040858f581b64509932fb91c64f0f.tar.xz | |
odb/source: introduce source type for robustness
When a caller holds a `struct odb_source`, they have no way of telling
what type the source is. This doesn't really cause any problems in the
current status quo as we only have a single type anyway, "files". But
going forward we expect to add more types, and if so it will become
necessary to tell the sources apart.
Introduce a new enum to cover this use case and assert that the given
source actually matches the target source when performing the downcast.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'odb/source.h')
| -rw-r--r-- | odb/source.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/odb/source.h b/odb/source.h index e6698b73a3..45b72b81a0 100644 --- a/odb/source.h +++ b/odb/source.h @@ -1,6 +1,17 @@ #ifndef ODB_SOURCE_H #define ODB_SOURCE_H +enum odb_source_type { + /* + * The "unknown" type, which should never be in use. This type mostly + * exists to catch cases where the type field remains zeroed out. + */ + ODB_SOURCE_UNKNOWN, + + /* The "files" backend that uses loose objects and packfiles. */ + ODB_SOURCE_FILES, +}; + /* * The source is the part of the object database that stores the actual * objects. It thus encapsulates the logic to read and write the specific @@ -19,6 +30,9 @@ struct odb_source { /* Object database that owns this object source. */ struct object_database *odb; + /* The type used by this source. */ + enum odb_source_type type; + /* * Figure out whether this is the local source of the owning * repository, which would typically be its ".git/objects" directory. @@ -58,6 +72,7 @@ struct odb_source *odb_source_new(struct object_database *odb, */ void odb_source_init(struct odb_source *source, struct object_database *odb, + enum odb_source_type type, const char *path, bool local); |
