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

时间:2016-10-12 00:13:36

标签: libgit2sharp

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

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

如果我在本地磁盘上克隆了Git Repo,我确实看到了这样做的方法,但是,我不想克隆它以获取此信息。

1 个答案:

答案 0 :(得分:1)

  

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

     

我没有本地磁盘上的repo克隆。获取分支列表

的最简单方法是什么

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

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

  

一旦我获得了分支列表,我想在我选择的分支中获取提交ID的列表。

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

作为替代方案,而不是克隆,一旦你获得了提示的SHA,你可以利用 Commit GitHub API ,并且对于每次提交,检索其父级,以递归方式重新应用每个API调用。请注意,最后一个选项的性能要差得多(网络I / O,API速率限制,......)。