mirror of
https://git.proxmox.com/git/libgit2
synced 2026-01-06 18:52:21 +00:00
Merge pull request #2324 from libgit2/cmn/file-in-objects-dir
odb: ignore files in the objects dir
This commit is contained in:
commit
1051100025
@ -755,6 +755,10 @@ static int foreach_cb(void *_state, git_buf *path)
|
||||
{
|
||||
struct foreach_state *state = (struct foreach_state *) _state;
|
||||
|
||||
/* non-dir is some stray file, ignore it */
|
||||
if (!git_path_isdir(git_buf_cstr(path)))
|
||||
return 0;
|
||||
|
||||
return git_path_direach(path, 0, foreach_object_dir_cb, state);
|
||||
}
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
#include "odb.h"
|
||||
#include "git2/odb_backend.h"
|
||||
#include "pack.h"
|
||||
#include "buffer.h"
|
||||
|
||||
static git_odb *_odb;
|
||||
static git_repository *_repo;
|
||||
@ -80,3 +81,26 @@ void test_odb_foreach__interrupt_foreach(void)
|
||||
cl_assert_equal_i(-321, git_odb_foreach(_odb, foreach_stop_cb, &nobj));
|
||||
cl_assert(nobj == 1000);
|
||||
}
|
||||
|
||||
void test_odb_foreach__files_in_objects_dir(void)
|
||||
{
|
||||
git_repository *repo;
|
||||
git_odb *odb;
|
||||
git_buf buf = GIT_BUF_INIT;
|
||||
size_t nobj = 0;
|
||||
|
||||
cl_fixture_sandbox("testrepo.git");
|
||||
cl_git_pass(git_repository_open(&repo, "testrepo.git"));
|
||||
|
||||
cl_git_pass(git_buf_printf(&buf, "%s/objects/somefile", git_repository_path(repo)));
|
||||
|
||||
cl_git_mkfile(buf.ptr, "");
|
||||
|
||||
cl_git_pass(git_repository_odb(&odb, repo));
|
||||
cl_git_pass(git_odb_foreach(odb, foreach_cb, &nobj));
|
||||
cl_assert_equal_i(47 + 1640, nobj); /* count + in-pack */
|
||||
|
||||
git_odb_free(odb);
|
||||
git_repository_free(repo);
|
||||
cl_fixture_cleanup("testrepo.git");
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user