gpt4 book ai didi

azure - 如何在Azure DevOps中仅忽略1个分支策略?

转载 作者:行者123 更新时间:2023-12-02 06:10:05 26 4
gpt4 key购买 nike

我正在开发一个 Azure DevOps git 项目,我想让满足某些需求的 Pull 请求忽略 [最少 2 个审阅者] 策略,但保留所有其他策略。什么是正确的方法?

到目前为止我已经尝试过:

  • 我已经实现了一个 API 来检查所有这些条件,所以这部分没有问题

  • 我想过让相同的代码批准分支并为服务用户提供额外的权限,但我的代码失败了

    pullRequest.Status = PullRequestStatus.Completed;
    pullRequest.CompletionOptions = new GitPullRequestCompletionOptions() { SquashMerge = true };
    await gitClient.UpdatePullRequestAsync(pullRequest, pullRequest.Repository.Id, pullRequest.PullRequestId);

Parameter name: You can only update reviewers, descriptions,titles, merge status, and status.

  • 所以现在我要绕过所有分支策略并尝试通过我的服务(代码)帐户完成拉取请求,但在这里我可以 only bypass all policies完成拉取请求时,这意味着我必须找到一种方法让我的代码自行检查所有这些分支 piliciies。

有更好的办法解决这个问题吗?

更新

我发现问题不是很清楚,所以我会尝试进一步解释一下:

当我们将批准视为一项要求时,我们总是想到某些开发人员正在执行某项操作,因此我们需要其他人批准该操作以确保其安全。然而,在某些情况下,我们可以将一切自动化,并且不需要与代码进行任何人工交互。例如:

  • 想象一下,您的基础团队或可靠的第三方(例如 Microsoft)发布了您正在使用的 SDK 的次要版本。如果您拥有值得信赖的良好 E2E、集成和单元测试,则没有理由要求人员检查代码。条件将更改为:
  • 代码可以编译
  • 测试正在通过
  • 只有 CSproj 文件发生了更改,并且更改模式不允许任何未发布的内容(不接受版本 1.1.1.1-Pull-Requestxxx)

最佳答案

事实证明,他们的 API 命名很奇怪。我尝试了很多方法,最终我用我的代码批准了 PR。有 2 个注释:

  1. 通过 API,您可能认为您可以代表所有人投票(批准、拒绝等),但实际上,您只能重置其他人的投票 (=0),而不能代表他们批准。您只能为您为其创建 PAT 的用户批准 PR。

  2. 他们对 API 的命名非常奇怪。您可能认为 UpdatePullRequestReviewerAsync 应该让您更新您的投票,但是!您必须使用 CreatePullRequestReviewerAsync 来代替!我花了几个小时试图找出它不起作用的原因,但最终我挖掘了代码并发现 UpdatePullRequestReviewerAsync 正在调用 PATCH 而不是 PUT。改变它解决了问题。

    public async Task ApprovePullRequest(Guid repositoryId, int pullRequestId)
    {
    var gitClient = await GetClient<GitHttpClient>();
    var reviewerId = GetConnectionAuthorizedIdentity().ToString();
    var identityRefWithVote = new IdentityRefWithVote
    {
    Id = reviewerId,
    Vote = 10,
    HasDeclined = false
    };
    await gitClient.CreatePullRequestReviewerAsync(identityRefWithVote, Config.MainProject, repositoryId, pullRequestId, reviewerId);
    }

PS:微软!为什么你们的SDK这么差?! IT 不需要与 API 保持 1:1 关系。你可以拥有有意义的方法,只接受你真正期望人们给你的东西。如果您希望人们只为自己投票,请使用投票方法,并且不要从开发人员那里获取所有这些无意义的参数。

关于azure - 如何在Azure DevOps中仅忽略1个分支策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75948302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com