在Subversion(SVN)中将代码重新集成到分支(而不是主干)。

5
我知道在Subversion(SVN)1.6中有一个--reintegrate选项,可以将一个特性分支合并回主干。
我的工作流程有点复杂:
我们有特性分支 - 我们经常将主干合并到它们上面。但是我们不会立即将它们放回到主干上。相反,我们从主干创建一个发布分支,并将特性分支合并到发布分支。此时,我们会遇到很多树冲突(因为特性分支和主干都存在许多更改)。 --reintegrate选项在这种情况下应该有所帮助,但看起来--reintegrate在将分支合并到主干以外的分支时似乎无法正常工作。这是真的吗?

1
看起来不需要重新整合:在阅读了这篇文章之后,我成功地解决了我的问题:http://designbygravity.wordpress.com/2009/10/19/what-mother-never-told-you-about-svn-branching-and-merging/ - tevch
1个回答

4
对我来说,你不能在除了之外的任何分支上使用--reintegrate选项是个新闻。Subversion没有任何关于命名或分支放置位置的标准,因此无法确定哪个是特殊的< trunk>。对于Subversion,branch、trunk和tags仅仅是目录。这些目录之所以对我们很特殊,只是因为我们这样说。
--reintegrate选项与我从分支A合并到分支B,然后尝试从分支B合并回分支A,有关系。我可能正在尝试将最初在分支A中的东西合并回分支A。--reintegrate选项让Subversion知道我正在反转合并的方向,并且不考虑在分支B中的原始合并自分支A的任何内容。
在跟踪合并更改的任何版本控制系统中,重新集成都是一个问题。在任何情况下,没有理由认为--reintegrate必须涉及一个名为trunk的分支。否则,这个选项就没有实际的需求。所有Subversion需要做的就是看到你要合并到名为< trunk> 的分支中,并意识到这可能是一个重新集成。

1
是的,我也有同样的印象 - 重新集成不能受限制,但我从未见过人们将其重新集成到除主干以外的其他地方,当我重新集成到分支时,我会得到以下错误信息:svn:'/svn/!svn/bc/364751/<module>/releases/<branch i reintegrate into>'路径不存在。 - tevch
看起来重新集成并不是我所需要的。我需要将两个特性分支合并到发布分支(trunk的副本)中。那么我该如何让 SVN 不考虑在分支 R 中的所有源自于从分支 T 合并的内容,并消除所有这些树冲突呢? - tevch
所以你需要从Trunk->Feature_branch,然后从Trunk->Release_branch。在Trunk中的更改会合并到Feature_branch中。你也要提交Feature_branch的更改。最后,你想将Feature_branch合并到Release_branch中。我不确定这是否有效,因为这两个分支没有直接关系。Svn的合并仍然有点弱。你最好使用--ignore-ancestory。订阅Subversion列表并在那里提问。该列表专门处理Subversion问题,可能比此处提供的专业知识更丰富。 - David W.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接