gpt4 book ai didi

azure-pipelines - 基于源分支的不同合并策略(自动)

转载 作者:行者123 更新时间:2023-12-05 06:21:07 29 4
gpt4 key购买 nike

我们在使用 Azure DevOps 的项目中采用了 gitflow 流程。我有以下场景:

  1. 当功能分支合并到 Develop 时,我想在完成拉取请求的同时执行压缩合并策略
  2. 当 Release 分支定期同步回 Develop 时,我想强制执行 no-ff 合并,以保留 Release 分支 checkin 历史

有两个问题:

  1. 鉴于我上面的两个要求,这是否以某种方式表明我在分支和合并方面可能做错了什么

  2. AzDo 中是否有一种工具可以根据源分支(自动)提供不同的合并策略?

谢谢,

最佳答案

我看不出 gitflow 进程的上述分支和合并有什么问题。请查看此文档以获取有关 gitflow process 的更多信息.

没有直接的方法可以根据源分支自动选择不同的合并策略。解决方法是您可以使用 pull request update rest api将 pr 设置为 autoComplete 并根据源分支设置合并策略。下面是一个例子供引用。

1、首先创建一个构建管道并添加一个powershell任务来运行下面的脚本。你可以查看here了解创建经典 UI 管道的步骤。对于 yaml 管道,您可以查看此 document .

下面的脚本会根据System.PullRequest.SourceBranch 并为此 pr 启用自动完成。这样当所有的要求都满足时,pr就会自动完成。 (您需要根据需要更改 if(){} 部分)。

    $uri = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/git/repositories/$(Build.Repository.ID)/pullrequests/$(System.PullRequest.PullRequestId)?api-version=5.1"

$response = Invoke-RestMethod -Uri $uri -Headers @{authorization = "Bearer $(System.AccessToken)"} -Method get
$userid = $response.createdBy.id
$merge = "rebaseMerge"

if("$(System.PullRequest.SourceBranch)" -eq "refs/heads/release"){$merge = "noFastForward"}

$body =@{
autoCompleteSetBy = @{
id= "$($userid)"
}
status = "complete"
completionOptions= @{mergeStrategy = $merge}
}
$bjson = $body | ConvertTo-Json

Invoke-RestMethod -Uri $uri -Headers @{authorization = "Bearer $(System.AccessToken)"} -Method patch -ContentType application/json -Body $bjson

2、然后配置branch policy对于开发分支。并选择上面创建的管道来设置 build validation .通过设置构建验证,pr 将触发运行在上述步骤中创建的构建管道。并且上面的流水线会根据源分支改变合并策略。

您也可以submit a feature request (单击建议功能并选择 azure devops)用于 Microsoft 开发的此工具。

关于azure-pipelines - 基于源分支的不同合并策略(自动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60106638/

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