diff options
| author | Patrick Steinhardt <ps@pks.im> | 2026-03-20 08:07:40 +0100 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2026-03-20 13:16:42 -0700 |
| commit | 83869e15fa9ef3b0ea2adbfe2fe68a309f95b856 (patch) | |
| tree | 40dd62b65441c70670cd5f019d11c88f9788e8ed /odb/source.h | |
| parent | 6c2ede6e4abed754bb5891c2904212c05efcfb11 (diff) | |
| download | git-83869e15fa9ef3b0ea2adbfe2fe68a309f95b856.tar.xz | |
odb: introduce generic `odb_find_abbrev_len()`
Introduce a new generic `odb_find_abbrev_len()` function as well as
source-specific callback functions. This makes the logic to compute the
required prefix length to make a given object unique fully pluggable.
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 | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/odb/source.h b/odb/source.h index ee5d6ed530..a9d7d0b96f 100644 --- a/odb/source.h +++ b/odb/source.h @@ -158,6 +158,18 @@ struct odb_source { unsigned long *out); /* + * This callback is expected to find the minimum required length to + * make the given object ID unique. + * + * The callback is expected to return a negative error code in case it + * failed, 0 otherwise. + */ + int (*find_abbrev_len)(struct odb_source *source, + const struct object_id *oid, + unsigned min_length, + unsigned *out); + + /* * This callback is expected to freshen the given object so that its * last access time is set to the current time. This is used to ensure * that objects that are recent will not get garbage collected even if @@ -361,6 +373,18 @@ static inline int odb_source_count_objects(struct odb_source *source, } /* + * Determine the minimum required length to make the given object ID unique in + * the given source. Returns 0 on success, a negative error code otherwise. + */ +static inline int odb_source_find_abbrev_len(struct odb_source *source, + const struct object_id *oid, + unsigned min_len, + unsigned *out) +{ + return source->find_abbrev_len(source, oid, min_len, out); +} + +/* * Freshen an object in the object database by updating its timestamp. * Returns 1 in case the object has been freshened, 0 in case the object does * not exist. |
