diff options
author | nulltoken <emeric.fermas@gmail.com> | 2013-08-30 19:36:00 +0400 |
---|---|---|
committer | nulltoken <emeric.fermas@gmail.com> | 2013-09-04 09:44:53 +0400 |
commit | b1a6c316a6070fac4ab1ec5792979838f7145c39 (patch) | |
tree | ea5c22691963b8595622e40142ac2369d816a5f5 /include/git2/sys/odb_backend.h | |
parent | 9b4ed214f484f22f127d7398467f45affcc014af (diff) |
odb: Move the auto refresh logic to the pack backend
Previously, `git_object_read()`, `git_object_read_prefix()` and
`git_object_exists()` were implementing an auto refresh logic. When the
expected object couldn't be found in any backend, a call to
`git_odb_refresh()` was triggered and the lookup was once again performed
against all backends.
This commit removes this auto-refresh logic from the odb layer and pushes
it down into the pack-backend (as it's the only one currently exposing
a `refresh()` endpoint).
Diffstat (limited to 'include/git2/sys/odb_backend.h')
-rw-r--r-- | include/git2/sys/odb_backend.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/git2/sys/odb_backend.h b/include/git2/sys/odb_backend.h index 31ffe1c33..4365906d4 100644 --- a/include/git2/sys/odb_backend.h +++ b/include/git2/sys/odb_backend.h @@ -64,6 +64,16 @@ struct git_odb_backend { int (* exists)( git_odb_backend *, const git_oid *); + /** + * If the backend implements a refreshing mechanism, it should be exposed + * through this endpoint. Each call to `git_odb_refresh()` will invoke it. + * + * However, the backend implementation should try to stay up-to-date as much + * as possible by itself as libgit2 will not automatically invoke + * `git_odb_refresh()`. For instance, a potential strategy for the backend + * implementation to achieve this could be to internally invoke this + * endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`). + */ int (* refresh)(git_odb_backend *); int (* foreach)( |