在 Azure DevOps 中使用 Git 门控推送

Gated Push with Git in Azure DevOps

目前我们在 TFVC 中使用一个开发分支,每个开发人员都在其中签入。我们有一个门控签入来确保我们的项目构建。

现在我们想切换到 git,但 TFS 2017 和 Azure DevOps 2019 没有类似于 git 存储库的门控签入的功能。我们可以更改工作流程以使用功能分支和拉取请求。但是拉取请求仅在合并到 master(或另一个分支)时测试代码。

如果每个功能都由一个开发人员开发,那就没问题了。但是在我们的大多数功能中,不止一个开发人员在一个功能上工作。我们如何防止开发人员将代码推送到破坏构建的分支并阻止同一分支上的其他开发人员?

您可以将分支策略应用于您的功能分支,就像您对 master 所做的那样。

https://docs.microsoft.com/en-us/azure/devops/repos/git/branch-policies?view=azure-devops

How could we prevent a developer from pushing code to a branch that breaks the build and blocks the other developers on the same branch?

我们可以使用分支策略来保护功能分支。

防止开发人员将代码推送到破坏构建的分支并阻止同一分支上的其他开发人员,例如 Feature 分支。

我们可以在 Feature 分支上添加 Build validation 来设置一个策略,要求在 pull request 中更改 在 pull request 可以被成功构建之前使用受保护的分支完成.

在这种情况下,此构建验证将阻止开发人员将代码推送到破坏构建的 feature 分支,并阻止 feature 分支上的其他开发人员。

当我们在这个 Feature 分支上有更多的开发人员时,每个开发人员都应该基于 Feature 分支创建自己的分支,就像 Feature_DevelopA,每当开发人员合并到 Feature分支,需要通过Build验证才能完成合并。

此外,我们还可以添加其他 Branch 策略,例如代码审查员。

希望对您有所帮助。