Subversion - 将分支合并到主干

时间:2011-04-18 14:30:39

标签: svn merge

我从我的行李箱中创建了一个分支(修订版9002)并继续对其进行了几周的更改。我还使用

定期将没有问题的主干更改合并到分支中

svn merge -rXXXX:HEAD

其中XXXX是我之前合并创建的修订版之后的修订版。到目前为止一切都很好。

我现在必须将分支合并到主干中,并且遇到了重大困难。我已尝试关注 SVN: Merging a Branch into Trunk ,但在使用

svn merge -r9003:head http://path/to/my/branch

我遇到了20个树冲突,然后是svn: Attempt to add tree conflict that already exists,并且流程停止了。

这是正确的方法吗?有什么想法吗?

我在树枝上做的最后一件事是将树干合并到它上面,所以树枝基本上就是我的新树干。

3 个答案:

答案 0 :(得分:2)

如果您已将所有内容从trunk合并到您的分支中,并且只想将其提升为trunk,那么最简单的方法就是移动存储库中的目录

svn move http://path/to/trunk http://path/to/branches/old-trunk
svn move http://path/to/branches/my-new-trunk http://path/to/trunk

请注意,由于您现在已经复制到主干,因此svn log --stop-on-copy(Tortoise中的默认值)将在此时停止 - 您需要关闭该标志以进一步查看。

否则我认为你必须像以前一样svn merge,在一小组修订中而不是一次性解决各种冲突。

答案 1 :(得分:1)

当我将分支合并回主干时,我总是使用--reintegrate标志。因此,当在已检出的主干副本的目录中时,请尝试svn merge --reintegrate ^/path/to/branch。另外,我不确定为什么你在已检出的trunk副本的目录中使用svn merge -rXXXX:HEAD而不仅仅是svn merge ^/trunk。这就是我一直以来所做的,尽管我经常犯错误:))

答案 2 :(得分:1)

要合并分支,您必须合并分支和主干的差异(即手册--reintegrate)。

所以

svn merge http://path/to/trunk@N http://path/to/branch@HEAD .

其中N是您合并到分支的主干的最后一个修订版。考虑到你做的最后一件事是将分支与主干同步,你可以使用HEAD

在某种程度上,你告诉SVN要合并在分支中完成的所有更改,不包括那些来自主干的更改。

此外,如果要将分支与主干同步,请执行svn merge http://path/to/trunk .