7

我目前正在尝试通读(GitHub API)[http://developer.github.com/v3/repos/contents/],以了解如何以编程方式在单个存储库中检索特定文件的所有版本。

我看到人们可以轻松获得提交列表和单个文件的当前版本。但是,有没有办法列出与特定文件相关的所有提交,然后遍历该文件的所有版本?

4

1 回答 1

9

要获取与特定文件相关的提交列表,请使用此 API 端点并指定path参数:

GET https://api.github.com/repos/:owner/:repo/commits?path=FILE_PATH

您将返回一组提交对象,每个对象都有一个sha属性。

现在您已拥有所有提交 SHA,您可以使用此 API 端点并通过指定ref查询参数来设置 SHA 来获取文件的所有不同版本。因此,对于每个提交 SHA,请求:

GET https://api.github.com/repos/:owner/:repo/contents/:FILE_PATH?ref=SHA

并读取content属性。请注意,内容是 Base64 编码的,但您也可以通过设置相关的Accept HTTP 标头来请求原始版本。

于 2013-05-23T06:39:13.440 回答