使用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执行这些操作。 新的对话框在主菜单上提供了三个不同的选项。
- 合并一系列修订
- 重新整合分支
- 合并两棵不同的树
从我可以收集,TortoiseSVN总是执行svn与下面的语法。
svn merge [–dry-run] –force From_URL @ revN To_URL @ revM PATH
另外,重新集成一个分支通常会失败,并显示一些消息,说明一些目标没有被合并,所以它不能继续,所以我不得不使用选项#3。
我的问题是:
- 我如何使用TortoiseSVN 1.5将变化从树干合并到分支?
- 如何使用TortoiseSVN 1.5将分支合并到主干中,使用和不使用重新合并方法?
- 上面哪个选项应该用于每个选项,为什么?
编辑
通过“空运行”testing,我发现命令行Subversion的操作
svn合并http://svn.myurl.com/proj/trunk
类似于TortoiseSVN中的选项#1(合并版本范围),只要我将版本范围留空即可。
行为取决于您的存储库具有哪个版本。 Subversion 1.5允许4种types的合并:
- 合并sourceURL1 [@N] sourceURL2 [@M] [WCPATH]
- 合并sourceWCPATH1 @ N sourceWCPATH2 @ M [WCPATH]
- 合并[-c M [,N …] | -r N:M …]来源[@REV] [WCPATH]
- 合并 – 重新整合来源[@REV] [WCPATH]
1.5之前的Subversion只允许前2种格式。
从技术上讲,你可以使用前两种方法执行所有合并,但最后两个启用Subversion 1.5的合并跟踪。
TortoiseSVN的选项在版本库为1.5+时将一个或多个版本的地图合并到方法3中,或者在版本库较旧时将合并到方法一中。
将function合并到发布/维护分支时,应使用“合并修订版本”命令。
只有当你想把一个分支的所有特征合并到一个父分支(通常是主干)时,你应该使用“重新分支分支”来进行研究。
最后一个命令 – 合并两个不同的树 – 只有当你想走出正常的分支行为时才是有用的。 (例如,比较不同的版本,然后将差异合并到另一个分支)
我不能正确地按照上面的答案,这里是更多的傻瓜指南…我相信你可以做到这一点无论是去树干 – >分支或分支 – >树干。
将主干合并到分支/标签中
- 检出分支/标签
- 右键单击分支的根 龟SVN | 合并…
- 合并types:合并一系列修订| 点击下一步'
- 合并版本范围:select复制到分支/标签的主目录的URL。 input要合并的修订版本或将该字段留空以合并所有修订| | 点击下一步'
- 合并选项:我刚刚将这些作为默认| 点击“合并”
- 这会将修订版本合并到检出的分支/标记中
- 然后将合并的更改提交到分支/标记
你应该使用“合并一系列的修订”。
要将树干中的更改合并到分支,请在分支工作副本中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