在NuGet库上,我使用develop
分支作为连续集成分支。我已经为其设置了策略,以便在不构建请求的情况下无法批准它。此外,任何成功的合并都将导致CI构建运行,最终将创建预发布的NuGet程序包并将其推送到私有的NuGet feed中。
当我对预发行版本的行为感到满意时,我创建了一个额外的PR以将develop
合并到master
中,这反过来又导致CD生成开始,这将导致生产发行的NuGet包。
这就是问题:可能会发生,我想直接从master创建一个修补程序分支,进行一些更改,然后将该分支的新PR直接返回master。这将启动通常的CD管道,并导致生产中的新版本(补丁号增加)。
问题在于,此后我想将master合并回develop,现在它会创建一个新的预发行版本(此时无关紧要)。
我是否有办法告诉Azure DevOps,在特殊情况下,如果将master合并回开发中,则应跳过分支策略?当我真正想做的就是将以前批准的PR从修补程序合并到master时,我是否甚至要从master制作PR来进行开发!?
欢迎任何建议。
答案 0 :(得分:2)
在不应用其策略的情况下,如何将master分支合并到developer分支中?
我们知道,分支策略用于保护目标分支。一旦我们在目标分支上设置了分支策略并启用它,提交给目标分支的任何更改都将触发分支策略。
因此,在不应用其策略的情况下,没有这样一种现成的方式可以将master分支合并到developer分支。 作为解决方法,我们可以将选项Bypass policies when completing pull requests
设置为Allow
,即Branches-> develop-> Branch Security:
使用此设置,此指定用户可以在不应用其策略的情况下将master分支合并到developer分支。
在特殊情况下,我是否可以告诉Azure DevOps, 母版被合并回开发中,分支策略应该是 跳过?
就像我在上面回答的那样,我们无法绕过特殊情况的分支策略,因为我们无法为每种特殊情况定义绕过规则。但是我们可以为某些指定用户提供绕过规则。
我真的需要做一个公关才能发展吗? 要做的是将以前批准的PR从修补程序合并到master!?
简短的回答是“否”。
让我给一个草图:
根据您的情况,您有一个基于hotfix
分支的master
分支。在hotfix
分支上完成开发任务之后,我们将hotfix
合并到master
分支。在完成PR之前,我们需要通过在master
分支上设置的分支策略。
然后,我们需要将master
分支合并到develop
中。您想绕过develop
上的分支策略,因为我们在过渡到master分支时已经PR hotfix
提交了,对吗?
如果是,这取决于master
和develop
分支上的分支策略是否相同(或更高),以确定是否需要从母版制作PR来进行开发。
如上所述,分支策略用于保护目标分支。如果master
和develop
分支上的分支策略相同,我们可以绕开develop
分支上的分支策略。但是,如果master
和develop
分支上的分支策略不同,即使我们已经完成合并,我们仍然需要从master进行PR来开发以保护develop
分支到主分支的修补程序。
总之,当我们将master
分支设置为主分支,而master
分支设置了最高规格的分支策略时,我们可以合并{{1} }到master
分支没有公关,当我真正想做的就是将以前批准的PR从修补程序合并到母版时!
希望这会有所帮助。