libgit2

git_odb_backend

Version:

An instance for a custom backend

Signature

typedef struct git_odb_backend { unsigned int version git_odb *odb int (*)(void **, size_t *, git_object_t *, git_odb_backend *, const git_oid *) read int (*)(git_oid *, void **, size_t *, git_object_t *, git_odb_backend *, const git_oid *, size_t) read_prefix int (*)(size_t *, git_object_t *, git_odb_backend *, const git_oid *) read_header int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_object_t) write int (*)(git_odb_stream **, git_odb_backend *, git_object_size_t, git_object_t) writestream int (*)(git_odb_stream **, size_t *, git_object_t *, git_odb_backend *, const git_oid *) readstream int (*)(git_odb_backend *, const git_oid *) exists int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix int (*)(git_odb_backend *) refresh int (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_indexer_progress_cb, void *) writepack int (*)(git_odb_backend *) writemidx int (*)(git_odb_backend *, const git_oid *) freshen void (*)(git_odb_backend *) free };

Members

unsigned int
version
odb
int (*)(void **, size_t *, git_object_t *, git_odb_backend *, const git_oid *)
read
int (*)(git_oid *, void **, size_t *, git_object_t *, git_odb_backend *, const git_oid *, size_t)
read_prefix
int (*)(size_t *, git_object_t *, git_odb_backend *, const git_oid *)
read_header
int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_object_t)
write

Write an object into the backend. The id of the object has already been calculated and is passed in.

int (*)(git_odb_stream **, git_odb_backend *, git_object_size_t, git_object_t)
writestream
int (*)(git_odb_stream **, size_t *, git_object_t *, git_odb_backend *, const git_oid *)
readstream
int (*)(git_odb_backend *, const git_oid *)
exists
int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)
exists_prefix
int (*)(git_odb_backend *)
refresh

If the backend implements a refreshing mechanism, it should be exposed through this endpoint. Each call to git_odb_refresh() will invoke it.

The odb layer will automatically call this when needed on failed lookups (ie. exists(), read(), read_header()).

int (*)(git_odb_backend *, git_odb_foreach_cb, void *)
foreach
int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_indexer_progress_cb, void *)
writepack
int (*)(git_odb_backend *)
writemidx

If the backend supports pack files, this will create a multi-pack-index file which will contain an index of all objects across all the .pack files.

int (*)(git_odb_backend *, const git_oid *)
freshen

"Freshens" an already existing object, updating its last-used time. This occurs when git_odb_write was called, but the object already existed (and will not be re-written). The underlying implementation may want to update last-used timestamps.

If callers implement this, they should return 0 if the object exists and was freshened, and non-zero otherwise.

void (*)(git_odb_backend *)
free

Frees any resources held by the odb (including the git_odb_backend itself). An odb backend implementation must provide this function.

Returned By

Parameter To

Versions