在主分支策略中,我已经配置了构建验证策略,以便每当针对主分支提出PR时运行构建管道。
在配置时,我观察到构建到期有多个选项
- 立即
- n小时后
- 从来没有
“立即”很容易理解。但我对“n小时后”选项感到困惑。
例如:如果我将构建到期设置为“After n hours”,并引发一个在文件BaseClass中有更改的PR。当我的PR相关的构建管道运行时,我的一个团队成员在BaseClass中发生了变化。cs被并入了主分支。他的更改可能导致了Baseclass中的合并问题。cs.
在与我的PR相关的构建管道完成后,由于构建策略将在n小时后到期,因此可以肯定,我将被允许完成此PR。
所以我的问题是ADO Git是否会因为合并问题而无法合并此PR,或者我的更改会覆盖我的团队成员更改?如果没有合并问题,它会完成吗?
我在微软网站上找不到清晰的文档,因此在这里寻求帮助。
2条答案
按热度按时间bwitn5fc1#
当您提出PR时,系统会构建一个假设的合并提交,将您的工作提交到目标分支。当此构建完成时,系统在PR上设置其状态。这个构建状态就是文档中提到过期时的实际含义。
如果在PR构建完成后,其他PR将另一个更改合并到目标分支,可能会有不同的结果:
案例#1是最简单也是最明显的-如果没有冲突解决方案,您根本无法合并PR。案例#3也是安全的-结果仍然是绿色的。最棘手的一个是情况#2 -结果,你可以得到一个红色的目标分支。
使构建状态过期的选项是上述情况#2的额外保护措施:
Immediate
到期。如果您希望减少构建系统的负载,并且团队中的开发人员足够成熟,可以负责,则可以考虑Never
过期。所以我的问题是ADO Git是否会因为合并问题而无法合并此PR。..
是的,如果存在合并冲突,系统将始终使合并失败。您的更改不会覆盖目标分支中已存在的队友的更改。
如果没有合并问题,它会完成吗?
是的,但正如我上面提到的,目标分支中的合并提交可能不是绿色的(案例2)。
希望这能帮上忙。
41zrol4v2#
如果有冲突,合并将停止并要求您解决冲突。如果没有冲突,自动完成将起作用,不会在代码中引起任何问题。