当前位置 : 主页 > 网络推广 > seo >

如何检索所有对象ID?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我试图使用libgit2获取git存储库中所有对象ID的列表.我似乎无法找到任何方法. libgit2有一个方法来获取所有对象ID(或迭代它们),还是我需要手动读取它们? 您可能正在寻找的是版本行走
我试图使用libgit2获取git存储库中所有对象ID的列表.我似乎无法找到任何方法. libgit2有一个方法来获取所有对象ID(或迭代它们),还是我需要手动读取它们? 您可能正在寻找的是版本行走API.

>功能描述可以在here找到.
> test演示不同的步行策略也可能为您提供一些帮助

编辑:libgit2 mailing list中的thread具体处理此问题.

来自Vicent Marti(libgit2维护者)的更精确答案是

… Just push every single HEAD into the the walker. You won’t
get any duplicate commits.

您所要做的就是将每个分支和标记oid推送到修订版步行器中,以递归方式遍历提交历史记录.请注意,这不会检索悬空提交(提交或未被分支或标记引用的提交链).

编辑2:此行为(类似于git log –all)已在libgit2sharp(libgit2 .Net bindings)中成功完成implemented.

编辑3:最近合并了一个新功能,它允许枚举存储在对象数据库中的所有对象(提交,树,blob,…):git_odb_foreach().

这将更符合@MatrixFrog谈论的git fsck场景.

> git_odb_foreach()documentation
> A simple test演示了如何使用API

网友评论