Subversion - 将分支合并到主干

3
我创建了一个分支(修订版本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",这个过程停止了。
这是正确的做法吗?有什么想法吗?
在分支上我最后一次操作是将主干合并到分支上,所以分支基本上就是我的新主干。

你的客户端和服务器上运行的 SVN 版本是什么? - ChrisH
3个回答

2
如果您已将主干中的所有内容合并到分支中,并且只想将其推广到主干,则最简单的方法可能是直接移动存储库中的目录。
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

要合并你的分支,你需要合并分支和主干之间的差异(也就是手动执行 --reintegrate)。

因此,

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

其中N是您合并到分支的主干的最后修订版本。考虑到您最后所做的事情是将分支与主干同步,因此您可以使用HEAD

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

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


1

当我将分支合并回主干时,我总是使用--reintegrate标志。因此,在检出的主干副本目录中,请尝试svn merge --reintegrate ^/path/to/branch。另外,我不确定为什么您要使用svn merge -rXXXX:HEAD而不是从检出的主干副本目录中只是使用svn merge ^/trunk。虽然我经常犯错,但这就是我一直在做的。


很遗憾,该代码库不支持--reintegrate选项。 - Per H
@Per Holmäng:啊,那就不用理会了 :) 你正在运行哪个版本的Subversion? - William

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