mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-04 19:50:19 +00:00
treebuilder: don't try to verify submodules exist in the odb
Submodules don't exist in the objectdb and the code is making us try to look for a blob with its commit id, which is obviously not going to work. Skip the test if the user wants to insert a submodule.
This commit is contained in:
parent
1609983377
commit
ea5bf6bbce
@ -757,7 +757,8 @@ int git_treebuilder_insert(
|
||||
if (!valid_entry_name(bld->repo, filename))
|
||||
return tree_error("Failed to insert entry. Invalid name for a tree entry", filename);
|
||||
|
||||
if (!git_object__is_valid(bld->repo, id, otype_from_mode(filemode)))
|
||||
if (filemode != GIT_FILEMODE_COMMIT &&
|
||||
!git_object__is_valid(bld->repo, id, otype_from_mode(filemode)))
|
||||
return tree_error("Failed to insert entry; invalid object specified", filename);
|
||||
|
||||
pos = git_strmap_lookup_index(bld->map, filename);
|
||||
|
@ -490,13 +490,25 @@ static void test_invalid_objects(bool should_allow_invalid)
|
||||
git_treebuilder_free(builder);
|
||||
}
|
||||
|
||||
static void test_inserting_submodule(void)
|
||||
{
|
||||
git_treebuilder *bld;
|
||||
git_oid sm_id;
|
||||
|
||||
cl_git_pass(git_treebuilder_new(&bld, g_repo, NULL));
|
||||
cl_git_pass(git_treebuilder_insert(NULL, bld, "sm", &sm_id, GIT_FILEMODE_COMMIT));
|
||||
git_treebuilder_free(bld);
|
||||
}
|
||||
|
||||
void test_object_tree_write__object_validity(void)
|
||||
{
|
||||
/* Ensure that we cannot add invalid objects by default */
|
||||
test_invalid_objects(false);
|
||||
test_inserting_submodule();
|
||||
|
||||
/* Ensure that we can turn off validation */
|
||||
cl_git_pass(git_libgit2_opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, 0));
|
||||
test_invalid_objects(true);
|
||||
test_inserting_submodule();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user