如何检索所有对象ID?[英] How to retrieve all object IDs?

本文是小编为大家收集整理的关于如何检索所有对象ID?的处理方法,想解了如何检索所有对象ID?的问题怎么解决?如何检索所有对象ID?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在尝试使用libgit2在git存储库中获取所有对象ID的列表.我似乎找不到任何方法. libgit2是否具有获取所有对象ID(或通过它们迭代)的方法,或者我需要手动阅读它们?

推荐答案

您可能要寻找的是revision walking api.

  • 可以找到该功能的描述这里.
  • a 测试证明不同步行策略也可能为您提供一些帮助

编辑: a thread a>专门处理这个.

Vicent Marti(Libgit2维护者)的更精确答案是

...只需将每个头推入步行者即可.你不会 获取任何重复提交.

您要做的就是将每个分支机构和标记为修订沃克(Walker),以递归地漫步提交历史记录.请注意,这将不会检索悬挂的提交(分支机构或标签未引用的提交或提交链).

编辑2:这种行为(类似于git log --all)已成功在libgit2sharp(libgit2 .net绑定)中实现.

编辑3:最近合并了一项新功能,允许列举所有存储在对象中数据库:git_odb_foreach().

这将更符合git fsck方案@matrixfrog在谈论.

本文地址:https://www.itbaoku.cn/post/359282.html