如何在Azure Devops Services中导出Branch Compare的结果?
没有可见的导出选项。
我尝试过使用 Diffs
的 RestAPI结果始终链接到最近的共同提交,而不是不同提交的列表。
找不到任何使用cli工具或sdk来访问此功能的方法。 请指教
是否有一个选项可以以编程方式访问它或重现相同的结果?
恐怕没有现成的 Rest API 可以获取两个分支之间的提交列表(分支比较功能)。
是否有一个选项可以以编程方式访问它或重现相同的结果?
是的。我们可以使用 PowerShell 脚本来运行 Rest API:Commits - Get Commits 来获取两个分支之间的所有提交。然后我们可以比较 PowerShell 脚本中的提交。
这是例子:
$token = "PAT"
$SourceBranch= "master"
$TargetBranch= "test"
$OrganizationName="{orgname}"
$ProjectName="{Projectname}"
$RepoID ="d5c7ef4b-6489-4111-af7a-b4c99d1d3bfe(Repoid)"
$SourceUrl="https://dev.azure.com/$($OrganizationName)/$($ProjectName)/_apis/git/repositories/$($RepoID)/commits?searchCriteria.itemVersion.version=$($SourceBranch)&api-version=6.0"
$Targeturl="https://dev.azure.com/$($OrganizationName)/$($ProjectName)/_apis/git/repositories/$($RepoID)/commits?searchCriteria.itemVersion.version=$($TargetBranch)&api-version=6.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$SourceCommits = Invoke-RestMethod -Uri $SourceUrl -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
$TargetCommits = Invoke-RestMethod -Uri $Targeturl -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
$array= @()
ForEach($Targetcommit in $TargetCommits.value)
{
$commit1id = $Targetcommit.commitid
$array = $array + $commit1id
}
ForEach($Sourcecommit in $SourceCommits.value)
{
$commitid = $Sourcecommit.commitid
$result = $array.Contains($commitid)
if($result -ne 'True')
{
echo $commitid
}
}
结果:
UI 中的分支比较:
Powershell 输出: