我正在尝试获取在给定日期范围内已更改的文件的计数(月度报告)。
使用 GitHub 的 API V4,我可以很容易地获得提交计数。我修改了该查询以获取每次提交中更改文件的计数,我想我可以手动聚合它们。这适用于小体积。作为参考,这是我正在使用的查询:
query ($owner: String!, $name: String!, $pagedEndCursor: String, $sinceTS: GitTimestamp!, $untilTS: GitTimestamp!) {
repository(owner: $owner, name: $name) {
refs(first: 100, refPrefix: "refs/heads/", after: $pagedEndCursor, orderBy: {field: TAG_COMMIT_DATE, direction: DESC}) {
totalCount
edges {
node {
name
target {
... on Commit {
history(first: 100, since: $sinceTS, until: $untilTS) {
totalCount
nodes {
changedFiles
committedDate
}
pageInfo{
hasNextPage
}
}
}
}
}
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
我面临的问题是我们的团队大量使用分支,所以我们有许多拥有超过 100 个分支的存储库,这就是我在遍历分支时内置分页的原因。虽然在给定月份内有 100 个分支提交的可能性很小,但单个分支在给定月份内可能有超过 100 个提交肯定是有可能的。
我想在历史记录中进行分页(我离开了最里面pageInfo
以显示在哪里),但我认为跨多个内部对象分页是行不通的。
我可以多次执行此操作,在其中运行查询以获取在给定月份中发生更改的分支列表,然后为每个分支运行单独的查询以获取更改的文件计数,但这似乎失败了使用 GraphQL 的目的。
是否有任何其他方法可以获取存储库所有分支的日期范围内更改的文件计数?