0

在 NuGet 库上,我使用该develop分支作为持续集成分支。我已经对其制定了政策,因此在没有构建它的情况下不能批准任何拉取请求。此外,任何成功的合并都将导致 CI​​ 构建运行,最终将创建一个预发布的 NuGet 包并将其推送到私有 NuGet 源中。

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

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

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

我是否有办法告诉 Azure DevOps,在将 master 合并回 develop 的特殊情况下,应该跳过分支策略?当我真正想做的只是将以前批准的 PR 从修补程序合并到 master 时,我什至必须从 master 那里做一个 PR 来开发!

欢迎任何建议。

4

1 回答 1

2

如何在不应用其策​​略的情况下将主分支合并到开发分支?

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

因此,没有这种开箱即用的方式将主分支合并到开发分支而不应用其策​​略。作为解决方法,我们可以将选项设置Bypass policies when completing pull requestsAllowBranches->develop->Branch Security:

在此处输入图像描述

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

我是否有办法告诉 Azure DevOps,在将 master 合并回 develop 的特殊情况下,应该跳过分支策略?

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

当我真正想做的只是将以前批准的 PR 从修补程序合并到 master 时,我什至必须从 master 那里做一个 PR 来开发!

最简洁的答案是不。

给个草图吧:

在此处输入图像描述

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

然后我们需要将master分支返回到develop. 您想绕过 上的分支策略develop,因为我们已经 PRhotfix提交到主分支时,对吗?

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

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

总而言之,当我们将master分支设置为主分支并且master分支设置了最高规格的分支策略时,我们可以在没有masterPR 的情况下合并到develop分支,而我真正想做的就是将先前批准的 PR 从 hotfix 合并到 master!

希望这可以帮助。

于 2019-06-27T06:23:47.270 回答