在git2go(libgit2)中查找包含指定blob对象的提交

时间:2015-07-24 15:54:19

标签: git go libgit2

给定blob对象,如何找到包含该对象的(第一个)提交?

我认为一个解决方案是从分支的尖端开始一个revwalk并沿着图形向下走,检查每个提交的树,并使用类似git_tree_entry_byid的内容来查看它是否包含您的对象。这会发现可以从特定分支访问提交,但在我的情况下它是一个解决方案。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

如果要检查对象是否包含在特定提交中,唯一的方法是沿着对象图向下走,看看它是否存在。

但是有一种方法可以重复使用其中一些搜索。如果您对一对提交进行了区分,并且您知道所讨论的对象中包含(或不包含)其中一个提交,则可以从提交树中查看该blob的外观/消失的差异,这样可以避免走下相同的树木。

git支持可达性位图,这使得相当快,但libgit2不支持读取它们。