如何导出Azure DevOps Services Branch Compare结果?

问题描述 投票:0回答:1

如何在Azure Devops Services中导出Branch Compare的结果?

没有可见的导出选项。

我尝试过使用 Diffs

的 RestAPI

结果始终链接到最近的共同提交,而不是不同提交的列表。

找不到任何使用cli工具或sdk来访问此功能的方法。 请指教

是否有一个选项可以以编程方式访问它或重现相同的结果?

azure-devops azure-devops-rest-api azure-repos
1个回答
0
投票

恐怕没有现成的 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 输出:

© www.soinside.com 2019 - 2024. All rights reserved.