从 atlassian 存储中获取所有拉取请求 ID

Get all pull request IDs from atlassian stash

我需要使用 REST API 获取所有拉取请求 ID。 我正在使用下面的 api 来获取。

https://stash.net/rest/api/1.0/projects/{}/repos/{}/pull-requests?at=refs/heads/release-18&state=ALL&order=OLDEST&withAttributes=false&withProperties=true&limit=1000

在响应中它只有 100 大小,即使我将限制设置为 1000

{
"size": 100,
"limit": 100,
"isLastPage": false,
"values": [],
"start": 0,
"nextPageStart": 100
}

有什么方法可以获取拉取请求吗?

您的 REST API 调用没有任何问题。您调用的端点默认有 25 个结果,上限不超过 100。任何超过 100 的 limit 值将 return 最多 100 个结果。

这是有充分理由的:它可以防止应用程序一次将太多结果加载到内存中。 Stash / Bitbucket Server 通常使用相当小的堆大小,因为繁重的工作由 git 完成并且您不希望 JVM 耗尽 git 需要的内存。 99.9% 的情况下,这里的正确方法是按照它想要的方式使用分页 API:一次一页。翻阅结果以获取所需的所有数据应该相对容易,如果您遇到困难,我可以使用 Python 分页示例更新此答案。

如果您真的想要更改此限制,您可以通过 Bitbucket Server config properties 通过在 $[ 中设置 page.max.pullrequests=1000 来实现=25=].properties 并重新启动应用程序。不过我不建议这样做,如果您不小心的话,您可能会在 JVM 中遇到 OutOfMemory 错误。

完全公开,我在 Atlassian 工作。