我目前正在尝试通读(GitHub API)[http://developer.github.com/v3/repos/contents/],以了解如何以编程方式在单个存储库中检索特定文件的所有版本。
我看到人们可以轻松获得提交列表和单个文件的当前版本。但是,有没有办法列出与特定文件相关的所有提交,然后遍历该文件的所有版本?
我目前正在尝试通读(GitHub API)[http://developer.github.com/v3/repos/contents/],以了解如何以编程方式在单个存储库中检索特定文件的所有版本。
我看到人们可以轻松获得提交列表和单个文件的当前版本。但是,有没有办法列出与特定文件相关的所有提交,然后遍历该文件的所有版本?
要获取与特定文件相关的提交列表,请使用此 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 标头来请求原始版本。