给定blob对象,如何找到包含该对象的(第一个)提交?
我认为一个解决方案是从分支的尖端开始一个revwalk并沿着图形向下走,检查每个提交的树,并使用类似git_tree_entry_byid
的内容来查看它是否包含您的对象。这会发现可以从特定分支访问提交,但在我的情况下它是一个解决方案。
有更好的方法吗?
答案 0 :(得分:0)
如果要检查对象是否包含在特定提交中,唯一的方法是沿着对象图向下走,看看它是否存在。
但是有一种方法可以重复使用其中一些搜索。如果您对一对提交进行了区分,并且您知道所讨论的对象中包含(或不包含)其中一个提交,则可以从提交树中查看该blob的外观/消失的差异,这样可以避免走下相同的树木。
git支持可达性位图,这使得相当快,但libgit2不支持读取它们。