SVN分支的分支

10
我们的代码库包括: * 主干(trunk), * A分支 - 从主干开始, * B分支 - 从A分支开始,
在A分支工作的程序员想要将其重新整合到主干中,并继续只在主干上工作。
我们不想将B分支重新整合到A分支中。
是否可能使B分支与主干相关,而不是与A分支相关,以便两个程序员可以继续在主干和B分支上分别工作?
(我希望我的问题清晰明了)

难道主干不应该只是发布代码,这样每个人都会有一个可用的基础吗? - Paul C
2个回答

14

我看您的情况是这样的:

pic1

您要从A合并到trunk:

enter image description here

如您所见,B分支从A分支开始,并有其内容。因为它已经存在,所以无法更改为从另一个代码库开始。您所能做的就是在将A分支的更改合并到trunk之后,将更改从trunk合并到B分支。这样,B分支将拥有trunkA分支的实际内容:

enter image description here


如果我这样做,以后可以依靠合并信息将分支B重新整合到主干上吗? - Erel Segal-Halevi
另一个问题:我一直在把从A分支合并到B分支。因此,如果A分支已经整合到主干线,然后我从主干线合并到B分支,岂不是会导致重复的更改? - Erel Segal-Halevi
答案很简单。如果你使用的是 Subversion > 1.5,那么你可以在你所描述的两种情况下都依赖于合并信息(mergeinfo)。 - altern
好的,我现在尝试了一下,但是没有成功:在从A合并到主干后,我尝试从主干合并到B,结果出现了很多冲突——SVN试图合并我已经从A合并到B的许多更改。例如,在分支A中,有一些新文件。我从A合并到B,文件就进入了B。现在,在从A合并到主干后,我从主干合并到B,SVN又试图添加这些文件——导致了树冲突(“本地添加,合并时收到的添加”)。 - Erel Segal-Halevi
你已经将A到B的合并完成了,这是不应该做的。问题在于你在最初的问题或评论中都没有提及从A到B的合并。大家可能会警告你不要这样做。我的建议是排除所有由A到B的合并所做出的更改,将此版本提交到B,然后再尝试从主干合并到B。 - altern

0

主干和所有分支都只是一些带有文件的文件夹。您可以将任何内容与其他任何内容合并。因此,答案是没有确切的“关系”概念,但实际上并不需要。


据我所知,合并信息的唯一目的是避免已经完成的合并,以便用户可以在不考虑修订版本的情况下进行合并。这是一个方便的工具。我通常合并尚未合并过的确切修订版本,因此我没有使用合并信息的必要。如果我错了,请有人制止我! - Dialecticus

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