【问题标题】:How to find out: Are all commits in a given branch covered by a pull request?如何找出:拉取请求是否涵盖给定分支中的所有提交?
【发布时间】:2020-05-29 14:32:49
【问题描述】:

我们内部使用的开发流程要求我们正式证明所有推送的提交都包含在审查(=拉取请求)中。

我知道,如果我们在存储库及其分支存在之初就启用了分支保护,那么在没有审查/拉取请求的情况下,就无法将提交推送到受保护的分支。

不幸的是,我们的内部审计员不满足于只查看拉取请求并告诉他们“该流程不允许不通过审查覆盖提交”。

知道如何做到这一点吗?我可以通过 REST API 获取所有数据并自己创建报告吗?或者是否已经存在某些内容,但在 web ui 中没有找到该方向的任何内容。

谢谢

【问题讨论】:

    标签: azure-devops azure-devops-rest-api


    【解决方案1】:

    您可以查看扩展名Pull Request Manager Hub。它可以在一个地方列出所有项目和存储库的拉取请求。

    在您的组织中安装此扩展程序后。您可以从 Azure devops Project UI 页面转到 Repos 下的 Pull Request Manager Hub,查看 reviewersstatus strong>等PR的细节。见下文:

    您也可以使用 rest api 获取所有数据并自行创建报告。见下文Get Pull Requestsrest api。

    GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId or repositoryName}/pullrequests?api-version=5.1

    要获得审稿人,您可以使用Pull Request Reviewers - Listrest api。

    请参阅下面的 powershell 中的示例脚本到call rest api。检查here 以获取个人访问令牌。

    $url ="https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId or repositoryName}/pullrequests?api-version=5.1"
    
    $pat = "Personal Access Token"    
    
    $base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($pat)"))
    
    $PRs=Invoke-RestMethod -Uri $url -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)} -Method get -ContentType "application/json" 
    
    $PRs.value | select pullRequestId, reviewers
    

    【讨论】:

    • 这不是我希望得到的完美解决方案,但它绝对很有帮助。谢谢。
    猜你喜欢
    • 2019-11-29
    • 2012-03-16
    • 2018-05-26
    • 2023-03-27
    • 2013-03-26
    • 2012-09-08
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    相关资源
    最近更新 更多