【问题标题】:Subversion - Merging branch into trunkSubversion - 将分支合并到主干
【发布时间】:2011-04-18 14:30:38
【问题描述】:

我从我的主干中创建了一个分支(修订版 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?

标签: svn merge


【解决方案1】:

如果您已将主干中的所有内容合并到您的分支中,并且只想将其提升到主干,那么只需移动存储库中的目录可能是最简单的

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 中的默认值)将在此时停止 - 您需要关闭该标志才能看到更远的位置。

否则我认为您将不得不像以前一样以小组的形式进行修改而不是一次性解决各种冲突。

【讨论】:

    【解决方案2】:

    当我将分支合并回主干时,我总是使用--reintegrate 标志。因此,当在已签出的主干副本的目录中时,请尝试svn merge --reintegrate ^/path/to/branch。另外,我不知道你为什么使用svn merge -rXXXX:HEAD 而不仅仅是从已签出的主干副本目录中使用svn merge ^/trunk。这就是我一直在做的事情,虽然我经常出错:)

    【讨论】:

    • 很遗憾,存储库不支持 --reintegrate。
    • @Per Holmäng:啊,那么不管:)你运行的是什么版本的颠覆?
    【解决方案3】:

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

    所以

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

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

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

    另外,当你想将你的分支与主干同步时,请svn merge http://path/to/trunk .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-25
      • 2011-11-25
      • 2012-11-24
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多