diff options
author | Edward Thomson <ethomson@vercel.com> | 2023-03-01 22:16:31 +0000 |
---|---|---|
committer | Edward Thomson <ethomson@vercel.com> | 2023-03-01 22:16:31 +0000 |
commit | e1e0d77c6f1573ab1e332af3f4c7490059d78e3c (patch) | |
tree | 6499b69e704078504df996a2bed9e8f554729adc | |
parent | 25ec37379ed07b10c4ecc6143cf6018cabc8f857 (diff) | |
download | libgit2-e1e0d77c6f1573ab1e332af3f4c7490059d78e3c.tar.gz |
odb: restore `git_odb_open`
`git_odb_open` was erroneously removed during a refactoring; add it
back.
-rw-r--r-- | src/libgit2/odb.c | 19 | ||||
-rw-r--r-- | tests/libgit2/odb/open.c | 34 |
2 files changed, 53 insertions, 0 deletions
diff --git a/src/libgit2/odb.c b/src/libgit2/odb.c index 1a02cbad9..0fc48035a 100644 --- a/src/libgit2/odb.c +++ b/src/libgit2/odb.c @@ -856,6 +856,25 @@ int git_odb__open( return 0; } +#ifdef GIT_EXPERIMENTAL_SHA256 + +int git_odb_open( + git_odb **out, + const char *objects_dir, + const git_odb_options *opts) +{ + return git_odb__open(out, objects_dir, opts); +} + +#else + +int git_odb_open(git_odb **out, const char *objects_dir) +{ + return git_odb__open(out, objects_dir, NULL); +} + +#endif + int git_odb__set_caps(git_odb *odb, int caps) { if (caps == GIT_ODB_CAP_FROM_OWNER) { diff --git a/tests/libgit2/odb/open.c b/tests/libgit2/odb/open.c new file mode 100644 index 000000000..395406d0f --- /dev/null +++ b/tests/libgit2/odb/open.c @@ -0,0 +1,34 @@ +#include "clar_libgit2.h" + +void test_odb_open__initialize(void) +{ + cl_fixture_sandbox("testrepo.git"); +} + +void test_odb_open__cleanup(void) +{ + cl_fixture_cleanup("testrepo.git"); +} + +void test_odb_open__exists(void) +{ + git_odb *odb; + git_oid one, two; + +#ifdef GIT_EXPERIMENTAL_SHA256 + git_odb_options opts = GIT_ODB_OPTIONS_INIT; + + cl_git_pass(git_odb_open(&odb, "testrepo.git/objects", &opts)); + cl_git_pass(git_oid_fromstr(&one, "1385f264afb75a56a5bec74243be9b367ba4ca08", GIT_OID_SHA1)); + cl_git_pass(git_oid_fromstr(&two, "00112233445566778899aabbccddeeff00112233", GIT_OID_SHA1)); +#else + cl_git_pass(git_odb_open(&odb, "testrepo.git/objects")); + cl_git_pass(git_oid_fromstr(&one, "1385f264afb75a56a5bec74243be9b367ba4ca08")); + cl_git_pass(git_oid_fromstr(&two, "00112233445566778899aabbccddeeff00112233")); +#endif + + cl_assert(git_odb_exists(odb, &one)); + cl_assert(!git_odb_exists(odb, &two)); + + git_odb_free(odb); +} |