使用Subversion合并两个分支修订版本

98

我想合并在http://url-of-branch-a的第10个版本和最新版本之间发生的所有更改,并将它们应用到http://url-of-branch-b

类似于这样...

svn merge -r 10:HEAD http://url-of-branch-a 

这个可能吗?如果可以,语法是什么?

我正在从Unix命令行运行SVN客户端。SVN客户端版本为1.4

编辑:是的,我的具体解决方案是...

  1. 切换到想要接收更改的工作副本(branch-b)的位置
  2. svn merge -r 10:HEAD http://url-of-branch-a

这将把“branch-a”的更改合并到“branch-b”中。


4
您需要知道哪个分支被采用。您可以在所在的分支上执行此操作(svn log --stop-on-copy .),以获取您从哪个版本号进行了分支。 - jmc
@jmc 自从2008年SVN 1.5发布以来,你就不再需要这个了,如果我没记错的话。 - bahrep
3个回答

129

操作步骤如下:

  1. 建立分支B的工作副本(svn checkout http://branch-b
  2. 将分支A的更改合并到B的工作副本中(svn merge -r 10:HEAD http://branch-a .
  3. 提交(在解决冲突后)工作副本B到分支b中(svn commit

查询svn合并语义的手册(帮助文件),它会展示svn合并总是将结果导出到一个工作副本中。

查看SVNBook获取更多详细信息。


你能否提供一下如何在Eclipse中使用SVN插件完成这个任务的想法? - Snehal Masne
这对我有效:svn合并 --force --allow-mixed-revisions -r 10:HEAD http://branch-a - Minh Nguyen
2
为什么我们要将修订版本10指定到HEAD?为什么需要两个修订版本端点而不是只有一个修订版本用作快照?“10到HEAD”是指哪个分支? - ahnbizcad

56

请使用SVN合并工具将URL B合并到您的A代码库中,然后提交A。反之亦然。


2

很多人试图在svn仓库中合并代码时会感到困惑,但我们不能直接在svn仓库中进行合并操作。我们可以按以下步骤将代码合并到本地机器的工作副本中:

  • 这个工作副本应该是合并的目标URL(即检出目标)。

  • 将工作副本与合并的源URL进行合并。

  • 提交到目标URL。

最佳实践:先合并进来,再合并出去。


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