【问题标题】:Subversion: Merging subtrees vs. merge-trackingSubversion:合并子树与合并跟踪
【发布时间】:2010-12-22 10:56:15
【问题描述】:

转自 Subversion feature branch requires changes from another feature branch

我有两个功能分支:“FeatureA”和“FeatureB”。 FeatureA 已经完成,但没有合并到主干,因为它是否应该在下一个版本中得到确认。

FeatureB 正在进行中,事实证明需要对 dbml 进行一些更改,这些更改实际上已应用于 FeatureA。

我有几个选项,其中之一是仅合并 dbml 和相关文件。我知道从工作副本根目录合并/更新/提交等是最佳实践,但如果我继续这样做会导致什么问题?

【问题讨论】:

    标签: svn merge feature-branch


    【解决方案1】:

    最后我解决了这个问题,与我的经理达成一致,如果我遇到这个问题,我会简单地将这两个功能构建到一个分支中,并且它们必须放在一起并一起进行测试。

    【讨论】:

      【解决方案2】:

      我认为您正在解决“子树合并信息”的问题。专家say this is best avoided。但性能也是一个问题,因为在大分支的根目录运行合并可能需要很长时间。为了避免这些性能问题,我做了子树合并,并且可以确认生成的子树合并信息确实会导致一些问题。所以你应该尽可能避免它。

      【讨论】:

        【解决方案3】:

        我发现记住 svn 中的合并是用三个参数描述的很有用。 您进行将 rev X 转换为 rev Y 的更改,并将这些更改应用于 rev Z。 我认为这与您所说的使用工作副本相冲突。

        因此,一种方法是在功能 A 分支中找到您对 dbml 所做的更改(由开始修订版和完成修订版标识),并将这些更改应用到功能 B 分支。

        【讨论】:

          【解决方案4】:

          由于版本 1.6 Subversion 跟踪合并,因此您不会有任何进一步的问题。

          【讨论】:

          【解决方案5】:

          您可以将 FeatureB 中的所有修订合并到您想要的 FeatureA 分支(注意合并的修订,因为 subversion 不会为您执行此操作 - svnmerge.py 工具可以执行此操作,但我宁愿保留记录我)。然后撤消/删除您不想要的更改(例如,正如您在前面的问题中所说,是修订的一部分)。

          我想说的是:“稍后,在 FeatureA 和 FeatureB 与主干合并期间,如果您撤消的更改独立于 FeatureB 分支中的其他更改,则应该不会发生冲突。”但我不确定这是否属实。也就是说,如果FeatureA和FeatureB有共同变化,当这些变化合并到主干时,是否存在冲突/双重变化?

          一种解决方法是采取一种安全的方法并自己进行困难的核算,以便以后在主干上执行合并时根本不会重复任何更改。

          一种简化的方法是在代码中使用一个标志来打开或关闭 FeatureA。这样,FeatureA 已经可以与主干合并。

          【讨论】:

          • Subversions 会跟踪自 1.5.0 以来的合并修订(最新版本是 1.6.6)
          猜你喜欢
          • 2017-05-12
          • 2012-05-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-16
          • 2022-01-01
          相关资源
          最近更新 更多