mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-11 18:17:54 +00:00
Merge pull request #1835 from libgit2/ntk/fix/less_backend_calls_on_revparsing
Some revparse love
This commit is contained in:
commit
ae49719a3b
@ -93,11 +93,7 @@ static int revparse_lookup_object(
|
|||||||
int error;
|
int error;
|
||||||
git_reference *ref;
|
git_reference *ref;
|
||||||
|
|
||||||
error = maybe_sha(object_out, repo, spec);
|
if ((error = maybe_sha(object_out, repo, spec)) != GIT_ENOTFOUND)
|
||||||
if (!error)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (error < 0 && error != GIT_ENOTFOUND)
|
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
error = git_reference_dwim(&ref, repo, spec);
|
error = git_reference_dwim(&ref, repo, spec);
|
||||||
@ -112,21 +108,14 @@ static int revparse_lookup_object(
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (error < 0 && error != GIT_ENOTFOUND)
|
if (error != GIT_ENOTFOUND)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
error = maybe_abbrev(object_out, repo, spec);
|
if ((strlen(spec) < GIT_OID_HEXSZ) &&
|
||||||
if (!error)
|
((error = maybe_abbrev(object_out, repo, spec)) != GIT_ENOTFOUND))
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (error < 0 && error != GIT_ENOTFOUND)
|
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
error = maybe_describe(object_out, repo, spec);
|
if ((error = maybe_describe(object_out, repo, spec)) != GIT_ENOTFOUND)
|
||||||
if (!error)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (error < 0 && error != GIT_ENOTFOUND)
|
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
giterr_set(GITERR_REFERENCE, "Revspec '%s' not found.", spec);
|
giterr_set(GITERR_REFERENCE, "Revspec '%s' not found.", spec);
|
||||||
|
@ -259,3 +259,16 @@ void test_odb_backend_nonrefreshing__readheader_is_invoked_once_on_success(void)
|
|||||||
|
|
||||||
cl_assert_equal_i(1, _fake->read_header_calls);
|
cl_assert_equal_i(1, _fake->read_header_calls);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test_odb_backend_nonrefreshing__read_is_invoked_once_when_revparsing_a_full_oid(void)
|
||||||
|
{
|
||||||
|
git_object *obj;
|
||||||
|
|
||||||
|
setup_repository_and_backend(GIT_ENOTFOUND);
|
||||||
|
|
||||||
|
cl_git_fail_with(
|
||||||
|
git_revparse_single(&obj, _repo, "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"),
|
||||||
|
GIT_ENOTFOUND);
|
||||||
|
|
||||||
|
cl_assert_equal_i(1, _fake->read_calls);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user