使用TortoiseSVN我如何将树干的变化合并到分支,反之亦然?

我一直在阅读Subversion 1.5使用Subversion的优秀免费版本控制进行分支/合并。 我认为我知道如何使用Subversion命令行客户端来执行我最需要的操作,它们是:

从中继更新分支

从分支的工作目录运行:

svn合并http://svn.myurl.com/proj/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将分支合并到主干中,使用和不使用重新合并方法?
  3. 上面哪个选项应该用于每个选项,为什么?

编辑

通过“空运行”testing,我发现命令行Subversion的操作

svn合并http://svn.myurl.com/proj/trunk

类似于TortoiseSVN中的选项#1(合并版本范围),只要我将版本范围留空即可。

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

  1. 合并sourceURL1 [@N] sourceURL2 [@M] [WCPATH]
  2. 合并sourceWCPATH1 @ N sourceWCPATH2 @ M [WCPATH]
  3. 合并[-c M [,N …] | -r N:M …]来源[@REV] [WCPATH]
  4. 合并 – 重新整合来源[@REV] [WCPATH]

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

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

TortoiseSVN的选项在版本库为1.5+时将一个或多个版本的地图合并到方法3中,或者在版本库较旧时将合并到方法一中。

将function合并到发布/维护分支时,应使用“合并修订版本”命令。

只有当你想把一个分支的所有特征合并到一个父分支(通常是主干)时,你应该使用“重新分支分支”来进行研究。

最后一个命令 – 合并两个不同的树 – 只有当你想走出正常的分支行为时才是有用的。 (例如,比较不同的版本,然后将差异合并到另一个分支)

我不能正确地按照上面的答案,这里是更多的傻瓜指南…我相信你可以做到这一点无论是去树干 – >分支或分支 – >树干。

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

  1. 检出分支/标签
  2. 右键单击分支的根 龟SVN | 合并…
  3. 合并types:合并一系列修订| 点击下一步' 在这里输入图像说明
  4. 合并版本范围:select复制到分支/标签的主目录的URL。 input要合并的修订版本或将该字段留空以合并所有修订| | 点击下一步' 在这里输入图像说明
  5. 合并选项:我刚刚将这些作为默认| 点击“合并” 在这里输入图像说明
  6. 这会将修订版本合并到检出的分支/标记中
  7. 然后将合并的更改提交到分支/标记

你应该使用“合并一系列的修订”。

要将树干中的更改合并到分支,请在分支工作副本中select“合并版本范围”,然后input主干URL和开始和结束修订以进行合并。

相同的方式合并树干中的一个分支。

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

看看svnmerge.py 。 它是命令行,不能被TortoiseSVN调用,但function更强大。 从常见问题解答 :

传统的颠覆会让你合并更改,但它不会“记住”你已经合并的东西。 它也没有提供一个方便的方法来排除变更集被合并。 svnmerge.py使一些工作自动化,并简化它。 Svnmerge也创build一个提交消息,包含所有合并事件的日志消息。

右键单击该文件夹,然后selectTortoiseSVN – > Merge All