documention for git_treebuilder_insert似乎暗示它并不关心被插入的对象是否有效:
不会尝试确保提供的oid指向对象数据库中的现有git对象,也不确保属性对于指向对象的类型有意义。
但是,当实际使用库创建树对象时,如果我尝试编写带有无效oid的条目,则此函数将返回失败。作为参考,这是代码:
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);
什么是预期的行为,代码或文档?
文件已经过时;代码表现如预期。 The change to validate object pointers是为了:
如果您不想要此行为,可以通过调用以下方法禁用它:
git_libgit2_opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, 0);