【问题标题】:Subversion feature branch requires changes from another feature branchSubversion 功能分支需要来自另一个功能分支的更改
【发布时间】:2010-12-04 05:54:06
【问题描述】:

我有两个功能分支:featureA 和 featureB。

FeatureA 已完成,但未合并到主干中,因为它未经测试,我们还没有准备好对其进行测试。

我正在处理功能 B,并且意识到我需要在功能 A 中实施更改才能继续。

最好的方法是什么?我想我有几个选择:

选项 1

将 featureA 合并到 featureB 分支(或者如果我小心地获得所有我想要的,可能只是特定的修订),然后恢复所有我需要的更改。

选项 2

重新实现featureB中的变化(这次不会太复杂),整理一下featureA和featureB合并到同一个地方时的冲突。

无论哪种方式,功能都将被合并到一个发布候选分支中,以供测试和部署。一旦该 RC 分支被确认为已测试,它将一次性合并到主干中。

【问题讨论】:

    标签: svn feature-branch


    【解决方案1】:

    好吧,如果这两个功能不涉及对相同源文件的更改,那么在继续开发时将它们分开的最简单方法是创建一个混合工作副本。查看 featureB,并根据需要将单个源文件切换到 featureA。 (如果您需要更多信息,请查看 svn switch。)您可以继续在 featureB 中进行更改并将它们签入,而无需实际合并任何 featureA 代码。 (这将允许本地开发,但如果您使用持续集成,则会破坏服务器上的构建,因为不会出现必要的 featureA 更改。)

    当然,如果 B 依赖于 A,这意味着 A 最终需要经过测试并准备好发布,然后 B 才能完成。对我来说,这意味着您现在应该将 featureA 更改合并到 featureB 并在 featureB 上启动开发。您只需要确保将任何修复应用到功能 A 并将它们合并到功能 B 中。

    【讨论】:

      【解决方案2】:

      我通过在 svn 中具有以下结构来解决这些问题:

      /prod
         /release_20090801
         /release_20090901
      /staging
      /trunk
      /sandbox
      

      开发人员在他们的沙盒中开发,然后在添加功能时合并到主干中。一旦迭代的功能完全完成并准备好进行最终质量检查,主干就会被复制到登台。

      因此,在您的场景中,功能 A 可以合并到主干,然后复制到沙箱以进行功能 b 开发。

      【讨论】:

      • 好吧,很公平。不过,这并不真正遵循功能分支标准。这个想法是每个特性都在它自己的分支中,直到你需要合并它。
      【解决方案3】:

      还有第三种选择:

      您可以挑选您想要合并的内容,然后将其合并。执行从 featureA 到 featureB 的合并,但只合并您感兴趣的修订。然后可以选择修复任何剩余的问题。

      在 Eclipse 中,例如这可以很方便地完成,因为合并对话框将让您选择要合并的修订版(或范围)。只需对您需要的所有修订范围重复此操作即可。

      【讨论】:

      • 说得好,但我需要考虑一个事实,即我只需要对给定的 featureA 版本进行 一些 更改。我需要一些 dbml 更改,但如果同一修订版中有其他更改,我不想要它们。因此恢复我不想要的更改。不过,您提出了一个很好的观点 - 合并所有与 dbml 相关的修订,并恢复我想要的那些修订中的内容。
      • @Neil,使用 tortoisesvn (1.6.5) 和新的 1.6 服务器,合并跟踪功能将使您已经接管到您的分支的修订版变灰。摘樱桃绝对是最简单、最好的方法。
      • 樱桃采摘引入了人为错误的可能性,但是。我希望 all 更改 featureA 中的几个文件。如果我在挑选樱桃时错过了其中一个文件的修订版怎么办?我宁愿从 featureA 中获取 所有 更改(因此所有修订合并为一个更改集)并使用 TSVN“检查修改”对话框再次恢复整个文件。
      • 啊,我认为您需要某些“功能”,这通常意味着某些修订(假设每个可区分的功能都有自己的修订)。
      • 另一个想法:如果您只想要某些文件的最新版本,为什么不只合并这些文件呢?没有什么会迫使您在项目根级别进行合并。 (如果您合并单个文件,合并跟踪将无法正常工作,但无论如何您都不需要)。
      猜你喜欢
      • 1970-01-01
      • 2017-07-04
      • 2020-12-15
      • 2017-07-01
      • 2019-02-28
      • 2016-03-04
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多