如果我想将分支合并到主干上,“svn merge --reintegrate”和 svn merge without reintegrate 有啥区别
Posted
技术标签:
【中文标题】如果我想将分支合并到主干上,“svn merge --reintegrate”和 svn merge without reintegrate 有啥区别【英文标题】:What's the difference between "svn merge --reintegrate" and svn merge without reintegrate if I'd like to merge a branch onto the trunk如果我想将分支合并到主干上,“svn merge --reintegrate”和 svn merge without reintegrate 有什么区别 【发布时间】:2013-08-18 00:51:48 【问题描述】:在svn book 中,它说merge
的--reintegrate
是“将所有源URL 的更改合并到工作副本中”。
我想将一个分支合并回主干。 Some places 说“绝对有必要”在合并时调用reintegrate
,然后立即调用delete the branch,我认为这很麻烦。 Other places 根本不提重新整合。我有 svn 1.6.11。
所以我现在不知道该怎么办。
【问题讨论】:
【参考方案1】:升级到svn 1.8,不用再担心了,它会自动弄清楚该怎么做。
来自svn 1.8 release notes:
在合并来自另一个分支的所有符合条件的修订期间,Subversion 1.8 将自动决定合并是否重新集成一个分支。因此,重新集成分支不再需要 --reintegrate 选项才能正确操作。
【讨论】:
合并后是否还需要删除分支(merge --reintegrate)? 如果您关注this little step,则无需在重新集成后删除分支。我不知道为什么 Subversion 不会自动为您执行此操作。【参考方案2】:同步合并与重新整合合并完全不同。前者用于将父分支上所做的所有更改合并到目标分支(通常是功能分支),这些更改尚未合并。后者用于将(特征)分支合并回父分支。基本上这意味着创建(功能)分支的临时克隆,从父分支到临时分支进行同步合并,最后父分支被临时分支替换。换句话说,临时分支包含对(功能)分支和父分支所做的所有更改。
出于某种原因,一些开发人员不了解其中的区别。因此,SVN 开发人员在 SVN 1.8 中删除了选项--reintegrate
。在此版本中,该工具会自动检测是否应使用同步合并或重新集成合并。
如果您使用旧版本,则应使用选项--reintegrate
进行重新集成合并。请注意,如果您记住一些事情,在重新集成后仍然可以使用 (feature) 分支。 SVN 的书很好地解释了这一点:
【讨论】:
“同步合并”是否只是普通的merge
,即没有--reintegrate
的merge
?
是的,同步合并是默认设置 - 没有 --reintegrate
、-c
和 -r
。以上是关于如果我想将分支合并到主干上,“svn merge --reintegrate”和 svn merge without reintegrate 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章