E5F0 Merge pull request #6512 from libgit2/ethomson/odb_loose · libgit2/libgit2@a7561e0 · GitHub
[go: up one dir, main page]

Skip to content

Commit a7561e0

Browse files
authored
Merge pull request #6512 from libgit2/ethomson/odb_loose
2 parents c0dc97b + 59bb933 commit a7561e0

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

src/libgit2/odb_loose.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1204,3 +1204,37 @@ int git_odb__backend_loose(
12041204
*backend_out = (git_odb_backend *)backend;
12051205
return 0;
12061206
}
1207+
1208+
1209+
#ifdef GIT_EXPERIMENTAL_SHA256
1210+
int git_odb_backend_loose(
1211+
git_odb_backend **backend_out,
1212+
const char *objects_dir,
1213+
git_odb_backend_loose_options *opts)
1214+
{
1215+
return git_odb__backend_loose(backend_out, objects_dir, opts);
1216+
}
1217+
#else
1218+
int git_odb_backend_loose(
1219+
git_odb_backend **backend_out,
1220+
const char *objects_dir,
1221+
int compression_level,
1222+
int do_fsync,
1223+
unsigned int dir_mode,
1224+
unsigned int file_mode)
1225+
{
1226+
git_odb_backend_loose_flag_t flags = 0;
1227+
git_odb_backend_loose_options opts = GIT_ODB_BACKEND_LOOSE_OPTIONS_INIT;
1228+
1229+
if (do_fsync)
1230+
flags |= GIT_ODB_BACKEND_LOOSE_FSYNC;
1231+
1232+
opts.flags = flags;
1233+
opts.compression_level = compression_level;
1234+
opts.dir_mode = dir_mode;
1235+
opts.file_mode = file_mode;
1236+
opts.oid_type = GIT_OID_DEFAULT;
1237+
1238+
return git_odb__backend_loose(backend_out, objects_dir, &opts);
1239+
}
1240+
#endif

tests/libgit2/odb/backend/loose.c

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#include "clar_libgit2.h"
2+
#include "repository.h"
3+
#include "odb.h"
4+
#include "backend_helpers.h"
5+
#include "git2/sys/mempack.h"
6+
7+
static git_repository *_repo;
8+
static git_odb *_odb;
9+
10+
void test_odb_backend_loose__initialize(void)
11+
{
12+
git_odb_backend *backend;
13+
14+
cl_fixture_sandbox("testrepo.git");
15+
16+
#ifdef GIT_EXPERIMENTAL_SHA256
17+
cl_git_pass(git_odb_backend_loose(&backend, "testrepo.git/objects", NULL));
18+
#else
19+
cl_git_pass(git_odb_backend_loose(&backend, "testrepo.git/objects", 0, 0, 0, 0));
20+
#endif
21+
22+
cl_git_pass(git_odb__new(&_odb, NULL));
23+
cl_git_pass(git_odb_add_backend(_odb, backend, 10));
24+
cl_git_pass(git_repository_wrap_odb(&_repo, _odb));
25+
}
26+
27+
void test_odb_backend_loose__cleanup(void)
28+
{
29+
git_odb_free(_odb);
30+
git_repository_free(_repo);
31+
32+
cl_fixture_cleanup("testrepo.git");
33+
}
34+
35+
void test_odb_backend_loose__read(void)
36+
{
37+
git_oid oid;
38+
git_odb_object *obj;
39+
40+
cl_git_pass(git_oid__fromstr(&oid, "1385f264afb75a56a5bec74243be9b367ba4ca08", GIT_OID_SHA1));
41+
cl_git_pass(git_odb_read(&obj, _odb, &oid));
42+
git_odb_object_free(obj);
43+
}

0 commit comments

Comments
 (0)
0