mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-11 04:28:26 +00:00
odb: Refresh on exists
query too
This commit is contained in:
parent
891a4681eb
commit
8fe6bc5c47
13
src/odb.c
13
src/odb.c
@ -529,6 +529,7 @@ int git_odb_exists(git_odb *db, const git_oid *id)
|
||||
git_odb_object *object;
|
||||
unsigned int i;
|
||||
bool found = false;
|
||||
bool refreshed = false;
|
||||
|
||||
assert(db && id);
|
||||
|
||||
@ -537,6 +538,7 @@ int git_odb_exists(git_odb *db, const git_oid *id)
|
||||
return (int)true;
|
||||
}
|
||||
|
||||
attempt_lookup:
|
||||
for (i = 0; i < db->backends.length && !found; ++i) {
|
||||
backend_internal *internal = git_vector_get(&db->backends, i);
|
||||
git_odb_backend *b = internal->backend;
|
||||
@ -545,6 +547,16 @@ int git_odb_exists(git_odb *db, const git_oid *id)
|
||||
found = b->exists(b, id);
|
||||
}
|
||||
|
||||
if (!found && !refreshed) {
|
||||
if (git_odb_refresh(db) < 0) {
|
||||
giterr_clear();
|
||||
return (int)false;
|
||||
}
|
||||
|
||||
refreshed = true;
|
||||
goto attempt_lookup;
|
||||
}
|
||||
|
||||
return (int)found;
|
||||
}
|
||||
|
||||
@ -674,7 +686,6 @@ int git_odb_read_prefix(
|
||||
}
|
||||
|
||||
attempt_lookup:
|
||||
|
||||
for (i = 0; i < db->backends.length; ++i) {
|
||||
backend_internal *internal = git_vector_get(&db->backends, i);
|
||||
git_odb_backend *b = internal->backend;
|
||||
|
Loading…
Reference in New Issue
Block a user