2009-12-02 44 views
5

Subversion feature branch requires changes from another feature branch颠覆:合并子树与合并跟踪

提出我有两个特性分支: “FeatureA” 和 “FeatureB”。 FeatureA已完成,但未合并到主干,因为尚未确认是否应在下一个版本中发布。

FeatureB正在进行中,而原来需要一些改变dbml实际已应用于FeatureA。

我有几个选择,其中之一是要合并只是DBML和相关文件。我知道从工作拷贝根合并/更新/提交等是最好的做法,但是如果我继续前进,会产生什么问题?

回答

0

最后,我通过我的经理同意,如果我有这样的问题,那我就干脆建立两个功能集成到一个分支,他们就必须走到一起,一起测试解决了这个问题。

1

您可以将所有从FeatureB的版本合并到您想要的FeatureA分支(好主意注意合并的版本,因为subversion不会为你做--svnmerge.py工具可以做到这一点,但我宁愿保留记录自己)。然后撤销/删除您不想要的更改(例如,如您在前面的问题中所述,是修订的一部分)。

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

一个解决办法是采取一种安全的方法,并做了困难的占自己的,因此任何变化并不是在所有时候主干进行合并后重复。

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

+1

Subversion从1.5.0开始追踪合并修订(最新版本为1.6.6) –

-1

从版本1.6开始,Subversion会跟踪合并,因此您不会再有任何问题。

+0

-1:Subversion的合并追踪并未解决所有问题 –

+0

没有解决所有问题!svn合并跟踪确实是为解决原始主题中提到的问题而开发的。作者应仔细阅读文档并遵循svn书提出的工作流程。 http://svnbook.red-bean.com/en/1.5/svn.branchmerge.advanced.html – Moisei

0

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

所以一个办法是找到你的DBML在功能分支(由开始修订和结束修订标识)所做的更改,并将这些更改功能乙支路。

0

我认为你是在“subtree mergeinfo”的问题。专家say this is best avoided。但是,性能也是一个问题,因为在大型分支的根部进行合并可能需要很长时间。为了避免这些性能问题,我已经完成了子树合并,并且可以确认生成的子树mergeinfo确实会导致一些问题。所以你应该尽可能避免它。