我从我的行李箱中创建了一个分支(修订版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
,并且流程停止了。
这是正确的方法吗?有什么想法吗?
我在树枝上做的最后一件事是将树干合并到它上面,所以树枝基本上就是我的新树干。
答案 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 .