【问题标题】:Reintegrate a branch vs merge a range of revision重新集成分支与合并一系列修订
【发布时间】:2010-12-18 00:17:58
【问题描述】:

在颠覆中,我现在创建了一个分支,我想将它合并回主干。我应该使用哪个选项?

重新整合一个分支

合并一个修订范围

我正在使用合并一系列修订,但我遇到了各种树冲突错误。知道这两者有什么区别吗?

【问题讨论】:

标签: svn


【解决方案1】:

使用分支时,您应该定期将主干的修订范围合并到分支到keep the branch in sync。如果您没有将任何版本号传递给 svn merge,并且您的 svn 服务器版本是 1.5 或更高版本,它将跟踪您之前完成的合并并仅自动合并较新的版本。

分支完成后,您应该最后一次将更改合并到其中,然后将reintegrate 重新合并到主干中。

【讨论】:

    【解决方案2】:

    这是我通常遵循的合并步骤。

    1.

    svn log -v --stop-on-copy http://mysvnrepo/mybranch

    这将在您首次创建分支时为您提供 repo 修订。 说是 AAAA。

    2.

    svn log -v -rAAAA:HEAD http://myrepo/trunk

    这将为您提供在您取出分支后在主干中所做的更改。这不是必需的,但我用它来了解我目前应该合并的内容。

    3.

    万一步骤2。报告主干更改,转到分支工作区并运行

    svn 合并 --dry-run -rAAAA:HEAD http://myrepo/trunk.

    这将报告自从您分支到 mybranch 以来在主干中所做的所有更改 - 查看并重新运行不带 --dry-run 选项的命令以执行实际合并。

    4.

    使用相关评论提交合并后的分支工作区。 (例如,“从主干版本 AAAA 到 XXXX 的合并更改” - 其中 XXXX 是当前 HEAD 版本)这会调出 HEAD 来表示版本 YYYY。

    5.

    接下来在主干工作区中,键入

    svn 合并 --dry-run -rAAAA:HEAD http://myrepo/branch.

    这应该报告分支从创建到现在所做的更改。 查看报告以验证正在合并/冲突的内容等,然后运行不带 --dry-run 选项的命令以实际执行合并。

    6.

    手动解决冲突,运行 svn resolved 告诉 repo 你的冲突现在都解决了,然后使用相关消息执行提交,例如“从 mybranch 合并到主干 - 包括从修订版 AAAA 到YYYY”。这有助于您下次运行日志,然后您可以在该点简单地从 YYYY 到 HEAD 进行下一次合并。

    【讨论】:

      【解决方案3】:

      Tortoise SVN Merge vs Reintegrate 解释:

      TortoiseSVN Documentation

      【讨论】:

      • zachary 从未提到过使用 Tortoise,所以我不一定认为这是“直接从源头上”。
      • 我会编辑我的帖子;但你有点迂腐,不是吗? Tortoise 是一个 SVN 客户端。如果我使用 SVN 命令行、Tortoise、SVNCOM 或 WebSVN,Merge 与 Reintegrate 有何不同?
      • 老实说:Tortoise 的 Merge a range of revisions 选项比 svn 命令行客户端的 merge 愚蠢得多,因为当您将修订列表留空时会发生这种行为。
      • 最近对 TortoiseSVN 的更改(即删除“重新集成”选项)导致您链接到的文档发生更改,因此不再讨论合并和重新集成之间的区别。 Here is a link to the document 与最初发布此答案时一样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多