libgit2 treebuilder API和即时打包

时间:2014-12-15 02:25:45

标签: git libgit2

我们正在开发一种工具,需要创建包含大量对象的非常大的 git树(~10k - 100k)。与这些对象相对应的许多文件的I / O将成为瓶颈,因此我们想知道是否可以进行一种即时重新打包。 我想这是在做git_blob_create_frombuffer()或做git_treebuilder_insert()时完成的。

你认为这是有意义和可行的吗? 如果这不可行,您对如何使用libgit2处理此用例有任何建议吗?

1 个答案:

答案 0 :(得分:0)

看起来树木是什么以及它是如何形成的,可能会有一些误解。

创建树不应该导致重新打包。创建树时,您已拥有数据库中的对象。因此,创建树的最快方法是保留已经存在的数据。从blob中创建一个包意味着将它们全部读入并进行比较。根据定义,离开它们是你能做的最快的事情,因为它不涉及任何工作。

在某些时候,公开一种将对象直接写入packfile的方法可能是有意义的,但目前这是不可能的。

您将来发言,这表明您尚未衡量或实施此项目。在你这样做之前,任何其他的建议都会毫无用处,因为它与你 对你的代码所做的事情无关。