使用OctoKit获取存储库的所有文件

9
我希望使用octokit获取我的github存储库中有关文件的所有信息。
项目地址:http://octokitnet.readthedocs.org/en/latest/contributing/ 更新: 我认为我可以做的是 getAllFilesFromRepository
这将返回一个JSON,其中包含存储库中所有文件的类似下面示例的信息。
{
  "type": "symlink",
  "target": "/path/to/symlink/target",
  "size": 23,
  "name": "some-symlink",
  "path": "bin/some-symlink",
  "sha": "452a98979c88e093d682cab404a3ec82babebb48",
  "url": "https://api.github.com/repos/octokit/octokit.rb/contents/bin/some-symlink",
  "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/452a98979c88e093d682cab404a3ec82babebb48",
  "html_url": "https://github.com/octokit/octokit.rb/blob/master/bin/some-symlink",
  "download_url": "https://raw.githubusercontent.com/octokit/octokit.rb/master/bin/some-symlink",
  "_links": {
    "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/452a98979c88e093d682cab404a3ec82babebb48",
    "self": "https://api.github.com/repos/octokit/octokit.rb/contents/bin/some-symlink",
    "html": "https://github.com/octokit/octokit.rb/blob/master/bin/some-symlink"
  }
}

请注意:我不想下载任何文件,也不想写多次查询以检索数据。
2个回答

11

我不确定我理解问题的含义,但请先阅读入门指南,了解所需的设置。

以下是如何下载特定存储库内容的示例:

var github = new GitHubClient(...); // TODO: other setup

var contents = await github
                .Repository
                .Content
                .GetAllContents("octokit", "octokit.net");

...

var docs = await github
                .Repository
                .Content
                .GetAllContents("octokit", "octokit.net", "docs");

更改这些值以适应您感兴趣的存储库。如果您想下载非默认分支,请使用GetAllContentsByRef


我的目的不是下载文件,而只是获取具有结构的JSON。 - cpoDesign
@cpoDesign 我已经编辑了我的答案,使用了正确的端点。感谢你的澄清。 - Brendan Forster
谢谢你的回答,我会尝试的。 - cpoDesign

1

GetAllContents方法可以正常工作,但有一个小问题,它不会递归遍历您的存储库中的所有子文件夹。它只提供顶级中存在的文件和文件夹。如果您想列出存储库中的所有文件,我建议您使用以下GetRecursive方法:

var trees = _gitHubClient.Git.Tree.GetRecursive(_config.Owner, _config.RepositoryId, <<APPROPRIATE SHA>>).Result;

你可以获取最新提交的SHA或根据你的要求进行获取。这种方法将为您提供一个树形响应,其中包含足够的详细信息,如SHA、路径、类型和大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接