如何在没有本地存储库的情况下使用 LibGit2Sharp 从网络路径获取 Git Repo 的分支和提交?

How to fetch branches and commits of Git Repo using LibGit2Sharp from network path without a local repository?

使用 LibGit2Sharp,如何获取给定 repo url 的所有远程分支的列表?

我在本地磁盘上没有存储库的克隆。获取分支列表的最简单方法是什么?一旦我获取了分支列表,我想获取我选择的分支中的提交 ID 列表。

如果我在本地磁盘上克隆了一个 Git 回购协议,我确实找到了执行所有这些操作的方法,但是我不想为了获取此信息而克隆它。

Using LibGit2Sharp, how can I fetch the list of all Remote Branches given the repo url ?

I do not have a clone of the repo on the local disk. What's the simplest way to get the list of Branches

通过 LibGit2Sharp,可以读取有关远程存储库的引用(主要是分支和标签)的信息,而无需克隆它。这将检索这些引用的名称和每个指向的提交的 sha。

这可以通过 IEnumerable<Reference> ListRemoteReferences(string url) 静态方法来完成。这相当于 git ls-remote CLI 命令。

once I get the list of branches, I'd like to get the list of Commit Id's in a branch of my choice.

不幸的是,ListRemoteReferences()只会return每个分支的尖端。您是否需要枚举此分支引用的其他提交,仅使用 LibGit2Sharp,您必须在本地克隆远程存储库。

作为一种替代方法,而不是克隆,一旦您获得了提示的 SHA,您可以利用 Commit GitHub API 并为每个提交检索其parent(s),递归地为他们每个人重新应用 API 调用。请注意,最后一个选项的性能要低得多(网络 I/O、API 速率限制,...)。