在 Azure DevOps Server 2019 上,如何在不应用其策​​略的情况下将 master 分支合并到 develop 分支?

On Azure DevOps Server 2019, how can I merge the master branch into develop branch WITHOUT its policies being applied?

在 NuGet 库中,我使用 develop 分支作为持续集成分支。我已经为其设置了策略,以便在未构建的情况下无法批准拉取请求。此外,任何成功的合并都会导致 CI 构建到 运行,最终将创建预发布 NuGet 包并将其推送到私有 NuGet 提要中。

当我对预发布行为感到满意时,我创建了一个额外的 PR 以将 develop 合并到 master,这反过来会导致开始构建 CD,这将导致NuGet 包的生产版本。

事情是这样的:我可能想直接从 master 创建一个修补程序分支,进行一些更改,然后对该分支直接返回 master 进行新的 PR。这将启动通常的 CD 管道并在生产中产生新版本(补丁编号增加)。

虽然我想在此之后将 master 合并回 develop,它现在创建一个新的预发布版本(此时无关紧要)。

我是否有办法告诉 Azure DevOps,在 master 合并回 develop 的特殊情况下,应该跳过分支策略?我什至 从 master 到 develop 做一个 PR,而我真正想做的就是将之前批准的 PR 从 hotfix 合并到 master!?

欢迎任何建议。

how can I merge the master branch into develop branch WITHOUT its policies being applied?

众所周知,分支策略用于保护目标分支。一旦我们在目标分支上设置了分支策略并启用它,提交到目标分支的任何更改都将触发分支策略。

因此,没有这种开箱即用的方法可以在不应用其策​​略的情况下将 master 分支合并到 develop 分支。 作为解决方法,我们可以将选项 Bypass policies when completing pull requests 设置为 Allow,Branches->develop->Branch Security:

使用此设置,此指定用户可以在不应用其策​​略的情况下将 master 分支合并到 develop 分支。

Do I have a way to tell Azure DevOps that in the special case of master being merged back into develop, branch policies should be skipped?

就像我上面的回答,我们无法绕过特殊情况的分支策略,因为我们无法为每个特殊情况定义绕过规则。但是我们可以为某些指定用户提供旁路规则。

Do I even have to make a PR from master to develop, when really all I want to do is merging a previously approved PR from hotfix to master!?

简短的回答是否定的。

我来画个草图:

在你的情况下,当你有一个基于 master 分支的 hotfix 分支时。我们在hotfix分支完成开发任务后,将hotfix合并到master分支。在我们完成 PR 之前,我们需要通过我们在 master 分支上设置的分支策略。

然后我们需要将 master 分支返回到 develop。您想绕过 develop 上的分支策略,因为当我们进入 master 分支时,我们已经 PR hotfix 提交,对吗?

如果是,这取决于masterdevelop分支上的分支策略是否相同(或更高)来确定是否需要从master到开发的PR。

如上所述,分支策略用于保护目标分支。如果 masterdevelop 分支上的分支策略相同,我们可以绕过 develop 分支上的分支策略。但是,如果 masterdevelop 分支上的分支策略不同,我们仍然需要从 master 做一个 PR 来开发以保护 develop 分支,即使我们已经完成了合并主分支的修补程序。

综上,当我们将master分支设置为主分支,master分支设置最高规格的分支策略时,我们可以将 master 合并到 develop 分支 而没有 PR,而我真正想做的就是将先前批准的 PR 从修补程序合并到主版本!

希望这对您有所帮助。