使用TortoiseSVN如何将更改从主干合并到分支,反之亦然?

Rya*_*lor 130 svn tortoisesvn merge branch

我一直在阅读Subversion 1.5的分支/合并,使用优秀的免费版本控制和Subversion一书.我想我了解如何使用Subversion命令行客户端来执行我最常需要的操作,它们是:

使用Trunk中的更改更新分支

从分支的工作目录运行:

svn merge http://svn.myurl.com/proj/trunk

将分支合并到主干

从trunk的工作目录运行:

svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch

但是,我们使用TortoiseSVN 1.5作为Subversion的接口.我想知道如何最好地使用TortoiseSVN执行这些操作.新对话框在主菜单上提供三个不同的选项.

  1. 合并一系列修订
  2. 重新整合分支
  3. 合并两棵不同的树

根据我的收集,TortoiseSVN总是使用以下语法执行svn.

svn merge [--dry-run] --force From_URL @ revN To_URL @ revM PATH

此外,重新集成分支通常会失败并显示一条消息,指出某些目标尚未合并,因此无法继续,因此我不得不使用选项#3.

我的问题是:

  1. 如何使用TortoiseSVN 1.5将更改从主干合并到分支?
  2. 我是如何使用TortoiseSVN 1.5将分支合并到主干,有和没有reintegrate方法?
  3. 我应该为每个选项使用以上哪个选项,为什么?

编辑

通过"干运行"测试我发现命令行是Subversion操作

svn merge http://svn.myurl.com/proj/trunk

类似于TortoiseSVN中的选项#1(合并一系列修订版),只要我将修订范围留空.

icc*_*c97 246

我无法正确地遵循其他答案,这里有更多的假人指南......

你可以做到这一点的方式轮去trunk -> branchbranch -> trunk.我总是首先trunk -> branch修复那里的任何冲突,然后合并branch -> trunk.

将主干合并到分支/标签中

  1. 签出分支/标签
  2. 右键单击分支的根目录 Tortoise SVN | 合并......
  3. 合并类型:合并一系列修订版| 点击下一步' 在此输入图像描述
  4. 合并修订范围:选择复制到分支/标记的trunk目录的URL.输入要合并的修订或将该字段留空以合并所有修订| 点击下一步' 在此输入图像描述
  5. 合并选项:我将这些保留为默认值 点击'合并' 在此输入图像描述
  6. 这会将修订合并到签出的分支/标记中
  7. 然后将合并的更改提交到分支/标记

  • 我省略了"修订范围以合并"并进行了"测试合并".这就是我需要的:范围是自动设置的(从分支完成到分支的最后一个修订) (4认同)
  • Tortoise SVN的当前版本现在可以选择合并所有修订版,而不是在步骤4中将修订版范围留空. (2认同)

Ber*_*ben 28

行为取决于您的存储库具有哪个版本.Subversion 1.5允许4种类型的合并:

  1. 合并sourceURL1 [@N] sourceURL2 [@M] [WCPATH]
  2. 合并sourceWCPATH1 @ N sourceWCPATH2 @ M [WCPATH]
  3. 合并[-c M [,N ...] | -r N:M ......]消息来源[@REV] [WCPATH]
  4. merge --reintegrate SOURCE [@REV] [WCPATH]

1.5之前的Subversion只允许前2种格式.

从技术上讲,您可以使用前两种方法执行所有合并,但最后两种方法可以启用subversion 1.5的合并跟踪.

当存储库为1.5+时,TortoiseSVN的选项将范围或修订映射合并到方法3,或者当存储库较旧时,将映射合并到方法1.

将功能合并到发布/维护分支时,应使用"合并一系列修订"命令.

只有当您想要将分支的所有功能合并回父分支(通常是主干)时,您才应该使用"重新整合分支".

最后一个命令--Merge两个不同的树 - 仅在您想要超出正常的分支行为时才有用.(例如,比较不同的版本,然后将差异合并到另一个分支)


Dav*_*ano 12

您应该使用"合并一系列修订版".

要将更改从主干合并到分支,请在分支工作副本内选择"合并修订范围",然后输入主干URL以及要合并的开始和结束修订.

以相反的方式合并树干中的分支.

关于--reintegrate标志,请查看此处的手册:http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate