【问题标题】:Enforcing a Squash merge on Azure DevOps Pull Request using GitPullRequestCompletionOptions使用 GitPullRequestCompletionOptions 在 Azure DevOps 拉取请求上强制执行壁球合并
【发布时间】:2019-07-18 19:29:53
【问题描述】:

我正在尝试使用 Azure DevOps Services REST API 来设置 PR Completion Options 以对拉取请求强制执行 squash 合并。

注意:我无法设置分支策略来强制执行 squash 合并,因为我正在测试某些条件以查看是否需要 squash 合并并尝试强制执行 squash,就好像仅为该 PR 设置分支策略。

当我拨打以下电话时:

PATCH https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=5.0

{
  "completionOptions": {
    "squashMerge": true
  } 
}

响应显示值已设置

然而,当尝试完成请求时,我希望“合并时壁球更改”复选框被勾选并禁用。

如果我保留表单原样并完成合并,则不会执行压缩。

如果我将 bypassPolicy 设置为 true,我仍然看不出完成选项有什么不同。

因此,总而言之,我知道调用是成功的,因为响应以选项集返回,但更改似乎并未通过 Azure DevOps 中的拉取请求。

【问题讨论】:

  • 对此我不是 100%,但我怀疑您正在寻找的行为只能通过分支策略来完成;您设置的标志可能会被 Web UI 忽略和/或仅在您还为 PR 设置自动完成时才被尊重,如果您没有其他可以阻止 PR 的策略,您可能不希望这样做立即完成。 (我相信完成后也会保留该标志以记录使用了哪些选项)。
  • 谢谢@T2PS,我相信你在收到微软的回复后是对的。我不相信我会想以我想要的方式执行。

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


【解决方案1】:

您可以使用强制执行此操作的策略。

如果您在 DevOps 中访问分支,请选择您的分支 -> 您只能允许 squash 合并的策略:

这应该使所有拉取请求进入由策略绑定的分支,以使用 squash 合并完成。

设置自动完成的工作原理如下:

【讨论】:

  • 我根据某些条件(如源分支结构)采用动态策略,如问题中所述,我无法设置分支策略。
【解决方案2】:

Microsoft 在the developer community forums 中回复了以下答案。

在这种情况下,用户界面中的预期行为会有所不同 并通过 REST 端点。在完成选项中设置 squashMerge 告诉 PR 仅在您完成时才完成壁球 REST 端点。在用户界面中,我们尊重用户设置 使用户能够选择他们想做的事情(如果没有 政策启用)。在这种情况下,您没有启用策略,因此用户 可以 挤压或不挤压。用户偏好实际上取代了 你用 REST API 做什么。如果他们 squash 合并了之前的 PR 我们将记住这一点,并在下一次为它们创建相同的默认值 公关。

TLDR:您不一定能控制表单默认值 REST 端点,并且应该使用策略来强制执行 squash 合并(或 希望您的用户可以设置复选框或不取决于他们的 偏好,但我们不强制默认)。

【讨论】:

    【解决方案3】:

    这对我来说行不通。

    分支政策与点击自动完成时看到的内容

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 2021-03-08
      • 2020-05-27
      相关资源
      最近更新 更多