我试图使用libgit2获取git存储库中所有对象ID的列表.我似乎无法找到任何方法.libgit2有一个方法来获取所有对象ID(或迭代它们),还是我需要手动读取它们?
您可能正在寻找的是revision walkingAPI.
编辑: libgit2 邮件列表中的一个线程专门处理此问题.
来自Vicent Marti(libgit2维护者)的更精确答案是
......将每一个HEAD推入助行器.你不会得到任何重复的提交.
您所要做的就是将每个分支和标记oid推送到修订版步行器中,以递归方式遍历提交历史记录.请注意,这不会检索悬空提交(提交或未被分支或标记引用的提交链).
编辑2:此行为(类似于git log --all)已在libgit2sharp(libgit2 .Net绑定)中成功实现.
编辑3:一项新功能,最近被合并,这将允许枚举所有对象(犯,树木,斑点,...)存储在对象数据库:git_odb_foreach().
这将更符合git fsck@MatrixFrog所讨论的情景.