github apit получить информацию о фиксации, относящуюся к конкретному файлу

как мне получить самую последнюю фиксацию, содержащую определенный файл? В настоящее время я извлекаю все файлы из определенного каталога в моем репо, например,

https://api.github.com/repos/' + this.fullRepoUrl + '/contents' + this.path

который возвращает серию объектов, которые выглядят так

{
    "name": "preview-whats-to-come.md",
    "path": "posts/preview-whats-to-come.md",
    "sha": "08bf61b7b1a8895cd1415f93f40315f4c5ef8bf9",
    "size": 1861,
    "url":       "https://api.github.com/repos/user/repo/contents/posts/preview-whats-to-come.md?ref=master",
    "html_url": "https://github.com/user/repo/blob/master/posts/preview-whats-to-come.md",
    "git_url": "https://api.github.com/repos/user/repo/git/blobs/08bf61b7b1a8895cd1415f93f40315f4c5ef8bf9",
    "download_url": "https://raw.githubusercontent.com/user/repo/master/posts/preview-whats-to-come.md",
    "type": "file",
    "_links": {
        "self": "https://api.github.com/repos/user/repo/contents/posts/preview-whats-to-come.md?ref=master",
        "git": "https://api.github.com/repos/user/repo/git/blobs/08bf61b7b1a8895cd1415f93f40315f4c5ef8bf9",
        "html": "https://github.com/user/repo/blob/master/posts/preview-whats-to-come.md"
}

}

Я думал об использовании sha и подтягивании коммита на основе этого, но это не sha для самого последнего коммита


person midaym    schedule 28.11.2015    source источник


Ответы (1)


Вместо /contents вам нужна конечная точка /commits. Это дает вам список коммитов, сделанных в репозиторий (точно так же, как git log), и принимает параметр path, который ограничивает ответ коммитами, касающимися одного файла. Если вы также установите параметр per_page, вы можете дополнительно ограничить его только самой последней фиксацией. Например,

https://api.github.com/repos/octokit/octokit.rb/commit?path=README.md&per_page=1

[
  {
    "sha": "658915fa87e88ac11cd6211fcceca3df49eb650f",
    "commit": {
      "message": "Added a link to the releases page in the readme\n\nOctokit uses Github releases to document changes in each release, rather than a changelog file. To avoid confusion, I've added a link to the releases page under the \"Versioning\" section.\n\nThis fixes #639",
      "tree": {
        "sha": "5721d4c257226c77799b232ae5293fd1a0d77aaa",
        "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5721d4c257226c77799b232ae5293fd1a0d77aaa"
      },
      "url": "https://api.github.com/repos/octokit/octokit.rb/git/commits/658915fa87e88ac11cd6211fcceca3df49eb650f",
      "comment_count": 0
    },
    "parents": [
      {
        "sha": "615f96a7c06c32e76e1768d29ef0b40ec53da57d",
        "url": "https://api.github.com/repos/octokit/octokit.rb/commits/615f96a7c06c32e76e1768d29ef0b40ec53da57d",
        "html_url": "https://github.com/octokit/octokit.rb/commit/615f96a7c06c32e76e1768d29ef0b40ec53da57d"
      }
    ]
    ...snip...
  }
]

Поле верхнего уровня sha (658915f) является хешем фиксации и соответствует тому, что отображается вверху страница README.md на GitHub (вставленная страница может быть устаревшей - попробуйте ссылку API для текущего состояния).

person Kristján    schedule 29.11.2015