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

我一直在阅读关于使用 Subversion 1.5进行分支/合并的书籍,这是一本优秀的免费的 使用 Subversion 的版本控制书籍。我想我知道如何使用 Subversion 命令行客户端来执行我最常需要的操作,这些操作是:

使用主干的更改更新分支

从分行的工作目录来看:

合并

将分支合并到主干

从后备箱的工作目录来看:

Svn 合并——重新集成 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. 我应该对每个选项使用上述哪个选项,为什么?

剪辑

通过“干运行”测试,我发现命令行 Subversion 操作

合并

类似于 TortoiseSVN 中的选项 # 1(合并修订范围) ,只要我将修订范围保留为空白。

117603 次浏览

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

要合并从主干到分支的更改,在分支工作副本中选择“合并修订范围”,并输入要合并的主干 URL 以及开始和结束修订。

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

关于——重新整合标志,请查看这里的说明书: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate

这种行为取决于你的仓库的版本。 Subversion 1.5允许4种类型的合并:

  1. Merge sourceURL1[@N ] sourceURL2[@M ][ WCPATH ]
  2. 合并 source WCPATH1@N source WCPATH2@M [ WCPATH ]
  3. 合并[-c M [ ,N. . . ] |-r N: M... ]来源[@REV ][ WCPATH ]
  4. 重新整合源代码[@REV ][ WCPATH ]

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

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

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

当将特性合并到发布/维护分支时,您应该使用“合并一系列修订”命令。

只有当你想把一个分支的所有特性合并回一个父分支(通常是主干)时,你才应该考虑使用“重新整合一个分支”。

最后一个命令——合并两个不同的树——只有在您想要跳出正常的分支行为时才有用。(例如,比较不同的版本,然后将不同的版本合并到另一个分支)

看看 合并。它是命令行,TortoiseSVN 不能调用,但是它更强大。来自 常见问题:

传统的颠覆会让你 合并会改变,但不会 “记住”你已经合并的东西。 它也没有提供一个方便 排除更改集的方法 Py 自动化一些 工作,并简化它 类也创建一个提交消息 记录来自所有事物的信息 合并了。

我不能正确地跟随其他答案,这里有更多的模拟指南..。

你可以选择 trunk -> branch或者 branch -> trunk。我总是首先做 trunk -> branch修复任何冲突,然后合并 branch -> trunk

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

  1. 检查分支/标记
  2. 右键单击分支的根 | Tortoise SVN | Merge..。
  3. 合并类型: 合并一系列修订 | 单击“下一步” enter image description here
  4. 合并修订范围: 选择复制到 Branch/tag 的主干目录的 URL。输入要合并的修订,或者将字段留空以合并所有修订 | 单击“下一步” enter image description here
  5. 合并选项: 我只是默认保留这些选项 | 点击‘ Merge’ enter image description here
  6. 这将把修订合并到签出的分支/标记中
  7. 然后将合并的更改提交到分支/标记

Shift-右击文件夹并选择 TortoiseSVN-> MergeAll