【问题标题】:How to reintegrate branch, overwriting trunk changes that has not been merged into branch?如何重新集成分支,覆盖尚未合并到分支的主干更改?
【发布时间】:2012-02-28 09:16:46
【问题描述】:

在过去的六个月里,我们一直在开发一个功能分支。在此期间对主干所做的大部分提交都已合并到分支,但有些主干提交故意从未合并到分支。

现在分支已经完成,我们基本上想用分支“替换”主干(我们不再需要从未合并到分支的主干更改)。 This answer to a simular question suggests:

  1. 检查您从中创建分支的主干版本(不是 HEAD 版本)。
  2. 将其提交到存储库(这将撤消所有后续的主干更改)。
  3. 重新整合-合并(您的主干工作副本现在应该与分支相同。)
  4. 提交合并的主干,大功告成!

This answer suggests:

svn co http://svnhost/trunk
cd trunk
svn merge http://svnhost/trunk http://svnhost/branches/branchname

在我的情况下,正确的解决方案是什么?

【问题讨论】:

    标签: svn merge tortoisesvn branch


    【解决方案1】:

    如果您真的想更换您的主干,那么您可以使用存储库浏览器 (TortoiseSVN) 并执行以下操作:

    • 删除主干
    • 使用“复制到”将您的分支复制到“主干”位置
    • 删除分支

    您还可以将分支移动到存储库根目录并将其重命名为“trunk”。

    如果您使用指向当前主干的外部对象,如果您在引用主干时没有使用“peg”修订,您可能会遇到问题。如果你不使用外部,你应该没问题。

    【讨论】:

    • 我使用外部,但它们没有指向主干。我相信除了更换后备箱我别无选择。 500 个修订被合并到分支,30 个没有。如果从主干合并,这 30 个会弄乱分支......下次我将改为维护两个分支。 delete + copy-to 是否比 checkout and comitt old trunk + reintegrate 更好?它会很好地保留修订历史吗?
    • 我不确定您的“结帐”方法究竟会发生什么。我的方法保留了分支的历史记录(尽管您需要取消选中 TortoiseSVN 日志对话框中的“停止复制/重命名”复选框)。
    • 我转储/加载了 repo 并做了一些测试,对你的方法很满意。分支是早期创建的(r120,现在是 r1500),所以我不认为它从现在开始“接管”主干是一个主要问题。谢谢斯特凡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 2012-06-02
    • 2019-06-11
    • 2010-11-25
    相关资源
    最近更新 更多