git - 如何使用 Azure DevOps REST API 计算所有拉取请求
问题描述
我正在尝试使用 Azure DevOps REST API 来计算我们存储库中拉取请求的总数,并最终使用它来希望从 git 数据中获得一些更有用的信息。
我尝试使用对存储库的 GET 请求来返回拉取请求列表,但 Azure API 将每个请求的响应限制为 101。您可以使用 $top 和 $skip 来更改返回的响应数量和响应,并使用 $count 来计算返回的响应。然而,这仍然将结果限制为 1,000 的绝对最大值并返回 PR 中包含的整个数据集,当我真的只需要知道其中的实例数时,我不需要它的数据完全返回,因为这会在大型回购中产生巨大的结果。
这是我正在使用的 GET 请求:
https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repository}/pullrequests?$top=999&$count=true&searchCriteria.status=all&api-version=5.0
这是我用来返回项目计数的测试脚本,邮递员
var body = JSON.parse(responseBody);
tests[body.value.length + " Pull Requests in this Repository" ] = true;
正如预期但不希望的那样,这将返回响应计数为 101。非常感谢任何提示和技巧!
解决方案
powershell的简单示例代码:
function GetPullRequest{
param(
[string]$org,
[string]$project,
[string]$repo,
[string]$token
)
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "test",$token)))
$count=0
$i=0
do{
$uri="https://dev.azure.com/$org/$project/_apis/git/repositories/$repo/pullRequests?api-version=5.0&`$top=100&`$skip=$i"
$i+=100
Write-Output $uri
$result= Invoke-RestMethod -Method Get -Uri $Uri -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $bodyJson
Write-Output $result.Count
$count+=$result.Count
if($result.Count-lt 100){
break;
}
}while($true)
write-output "Finish. Total Pull Request count: $count";
}
GetPullRequest -org "your organization" -project "your teamproject" -repo "your repository" -token "your personal access token"
推荐阅读
- f# - 在 F# 中找不到此日期时间测试失败的原因
- python - Thales HSM 导入公钥 (EO) 错误“04”
- c# - 使用 linq groupby 创建所需数量的组(没有 while、for、foreach)
- vue.js - Vuetify 颜色选择器隐藏栏
- python-3.x - 如何将以下 python 代码转换为递归
- python - 如何从字符串列表中去除引号?
- python - 当我尝试对行项目进行字符串操作时,预期的字符串或类似字节的对象
- javascript - 按字符串类型升序对日期-月份数组进行排序
- python - DQN Pytorch Loss 不断增加
- c# - 发布带有托管核心的 Blazor webassembly 无法在 IIS 上运行