【问题标题】:Getting all files for repository using OctoKit使用 OctoKit 获取存储库的所有文件
【发布时间】:2016-07-01 15:18:28
【问题描述】:

我想使用 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"
  }
}

请注意 我根本不想下载任何文件,也不想通过多次调用来编写查询来检索数据。

【问题讨论】:

    标签: c# octokit octokit.net


    【解决方案1】:

    我不确定我是否理解这个问题,但请先阅读Getting Started 指南,了解您需要的设置。

    这是一个如何下载给定存储库内容的示例:

    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 我已经编辑了我的答案以使用正确的端点。感谢您的澄清。
    • 感谢您的回答,将尝试一下
    【解决方案2】:

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

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

    您可以获取最新提交的 SHA 或根据您的要求。此方法将为您提供具有足够详细信息的树响应,例如 SHA、路径、类型和大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 2019-10-17
      • 2016-05-13
      • 2013-02-01
      相关资源
      最近更新 更多