我正在使用Azure Devops Rest API,我正在努力找出获取特定存储库上最新操作时间戳(日期(的最佳方法。
现在我正在尝试获取提交和标记,并在那里检查操作数据。但我发现azure不支持只获取最新的,所以我必须对所有标签进行分页,例如。
我正在使用这些端点:
- https://learn.microsoft.com/en-us/rest/api/azure/devops/git/refs/list?view=azure-devops-rest-6.0&tabs=HTTP
- https://learn.microsoft.com/en-us/rest/api/azure/devops/git/commits/get-commits?view=azure-devops-rest-6.0&tabs=HTTP
所有这些处理都非常占用内存,所以我需要一些不同的东西。
也许有人可以提出一个如何做到这一点的想法。
感谢
您可以在调用REST API时尝试指定searchCriteria
。
例如,要从特定存储库获取最新提交,请参阅Commits-get-Commits以了解详细信息。
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits?searchCriteria.$top={searchCriteria.$top}&api-version=6.0
以下PowerShell供您参考:
Param(
[string]$orgurl = “https://dev.azure.com/{organization}",
[string]$project = “Test0924”,
[string]$repoid = “e7ad43eb-ecad-4098-93b4-b63fdf88711a”,
[string]$user = “”,
[string]$token = “xxx”
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$searchCriteria = "$" + "top=1"
#Get the latest commit from a specific repo
$Url = "$orgurl/$project/_apis/git/repositories/$repoid/commits?searchCriteria.$searchCriteria&api-version=6.0"
$commit = Invoke-RestMethod -Uri $Url -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
cls
$commit.value.committer | select name, email, date