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

时间:2016-03-15 23:04:14

标签: c# octokit octokit.net

我想使用octokit

从我的github存储库获取有关文件的所有信息

projectis: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 个答案:

答案 0 :(得分:7)

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

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

//REDIRECT TO HTTPS IF REQUEST IS NOT HTTPS
if($_SERVER['HTTPS']!="on")
{
$redirect= "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header( "HTTP/1.1 301 Moved Permanently" );
header("Location:$redirect");
exit;
}

更改值以适合您感兴趣的存储库。如果您要下载非默认分支,请改用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");

答案 1 :(得分:0)

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

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

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