代码之家  ›  专栏  ›  技术社区  ›  thatOneGuy

如何处理多个拉取请求?

  •  2
  • thatOneGuy  · 技术社区  · 7 年前

    我是否应该在第一个请求被接受后拒绝所有请求,以便他们可以将接受的请求与其更改合并为最新的?

    我在合并多个请求时遇到问题。我在VSTS工作。

    假设我有一个主分支,我创建了两个PBI,用于完成两项工作。

    对于这些PBI,我为每个PBI创建一个单独的分支。

    当在这些PBI上完成工作时,每个人都创建一个PULL请求,以便在合并回MASTER之前进行审查。

    在拉取请求时,两个分支都有效地与MASTER保持最新,因为它们已经将MASTER合并到它们的PBI分支上。

    现在,当我接受其中一个请求并将其合并到MASTER时,另一个PBI现在位于MASTER分支的后面。

    只是拒绝以后的PBI并要求他们及时更新的情况吗?当他们是最新的,我接受他们的第一个基础(只要他们是正确的)。

    我看到的问题是,如果有“n”个请求,我总是要拒绝“n-1”个请求,因为当我接受第一个请求时,剩下的请求就过时了。

    pull request problem

    上图显示主分支(绿色)和两个特征分支(橙色和蓝色)。两人都提出了拉货请求,当其中一个被接受时,另一个就过时了。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Sander Aernouts    7 年前

    第一个请求被批准,首先被合并到主分支。后续的拉取请求不需要合并其分支上的主分支,除非存在合并冲突。所以,它们不会过时,除非它们也处理同一组文件。

    当您看到拉取请求上的合并冲突时,请立即要求开发人员修复合并冲突并更新拉取请求,稍后再检查拉取请求。在这种情况下,随后的拉请求开发者已经过时,他必须在合并冲突修复中修复它们。

    因此,无论哪个pull请求在先前的pull请求之后进行,都必须处理与合并冲突相关的问题。

    如果你使用 Build validation 策略在分支策略中,如果更改了主策略,则可以将PR的生成结果设置为立即过期: enter image description here 这意味着生成将再次运行,这意味着您不仅捕获合并冲突,还捕获通过将PR与更新的主控形状合并而可能引入的错误。只有在您有propper单元测试并且在PR验证中启用了这些测试的情况下。

        2
  •  1
  •   TheCrimsonSpace    7 年前

    您不必担心拒绝一个或另一个请求。

    在一个拉取请求被接受后,如果第二个拉取请求包含与第一个拉入的项目冲突的任何内容,VSTS将在第二个拉取请求上显示一个大的红色错误。这将阻止在解决冲突之前完成拉取请求。

    我敢肯定,如果合并冲突发生,你甚至可以将VSTS配置为向创建PR的人发送电子邮件,以便他们可以更新PR。

    对于结构良好的应用程序,合并冲突并不常见,因此这可以很好地指示应用程序体系结构的质量。