如果我使用以下网址,
https://api.github.com/repos/raspberrypi/linux/commits?path=drivers/gpu/drm/i915/intel_display.c
我得到了前30个提交。但该文件有大约3000次提交。如何获得此文件的所有提交?
答案 0 :(得分:1)
您可以查询与给定文件关联的所有提交:
var stats = new Dictionary<string, int>();
foreach (var path in allPaths)
{
var request = new CommitRequest { Path = "path/to/file.cs" };
var commitsForFile = await client.Repository.Commit.GetAll(Owner, Name, request);
stats.Add(path, commitsForFile.Length);
}
此代码使用由GitHub正式维护和支持的Octokit。所有Octokit库都是在MIT许可下发布的,这意味着它们可以在任何项目中进行修改和使用。
答案 1 :(得分:1)
在GitHub API文档中查看Pagination之后,我最终做了类似下面的代码。但是,您必须小心所讨论的API请求率here。
import requests
import json
url = 'https://api.github.com/repos/raspberrypi/linux/commits?access_token=<your github user OAuth token>&path=drivers/gpu/drm/i915/intel_display.c'
commits = []
i = 1
r = requests.get(url + '&per_page=100&page=' + str(i))
while len(r.json()) != 0:
commits.extend(r.json())
i += 1
r = requests.get(url + '&per_page=100&page=' + str(i))
with open('commits.txt', 'w') as outfile:
json.dump(commits, outfile)