如何在不提交的情况下将两个SubVersion分支合并到一个工作副本?

时间:2012-09-14 13:46:44

标签: version-control svn

我目前的SubVersion工作流程如下:

  1. 主干用于对主要源代码进行小的内容更改和错误修复。
  2. 分支用于添加/编辑增强功能和项目。
  3. 因此,可以非常快速地进行,测试,提交和部署主干更改。鉴于增强功能和项目需要额外的用户测试和批准。

    当时,我有两个分支机构需要同时进行测试和批准。在完全测试和批准更改之前,我不想合并到主干并提交。

    我需要做的是将两个分支合并到一个工作副本而不进行任何提交。

    我正在使用Tortoise SVN,当我尝试合并第二个分支时,我收到一条错误消息:

      

    无法合并到具有本地修改的工作副本

    有没有一种方法可以在不提交任何合并的情况下执行此操作?

4 个答案:

答案 0 :(得分:2)

您目前拥有主干和2个分支A和B(它们都是主干的分支)。我建议您创建另一个名为AB的分支,如下所示:

  1. 将工作文件夹切换到主干,如果没有
  2. 更新最新版本并确保您没有本地修改。如果你这样做,要么提交它们(到主干),要么适当地恢复它们。
  3. 从主干上最后一次更新您的工作文件夹。请注意您已更新的修订号(称为修订版R)。
  4. 在回购中,将主干的版本R复制到名为“AB”的新分支(将您的工作文件夹切换为AB)
  5. 将工作文件夹与A。
  6. 合并
  7. 将工作文件夹切换为AB。
  8. 提交您的工作文件夹(至AB)并更新(从AB)。
  9. 将工作文件夹切换到主干。
  10. 将工作文件夹与B合并。
  11. 将工作文件夹切换为AB。
  12. 将您的工作文件夹提交给AB。
  13. 测试并向AB提交任何修复。
  14. 当它正常工作并且您已准备好将所有内容合并到主干时,请执行最终提交(到AB),然后更新您的工作文件夹(从AB)。
  15. 将工作文件夹切换到主干。
  16. 将您的工作文件夹与AB
  17. 合并
  18. 测试并修复
  19. 当它工作时,将工作文件夹提交到主干。
  20. 出去喝啤酒

答案 1 :(得分:1)

每个合并操作都在您的本地沙箱中完成。在提交一些垃圾代码之前,您不必担心。

我不知道您所做的整个部署过程,但您可以做的是:

  1. 切换到分支A
  2. 将分支A与分支B合并
  3. 构建应用,部署并测试它
  4. 如果一切正常,您可以提交所有更改(您在分支A上)。然后你可以切换到trunk并与分支A合并。在所有冲突解决后你可以在trunk上提交,就是这样。

答案 2 :(得分:1)

我们一度有类似的工作流程。我最终登陆的解决方案是保留多个本地副本,基本上每个分支一个。有时共享数据库有点冒险,但整体而言非常成功。

答案 3 :(得分:1)

Eric,“我可能只希望一次只部署一个更改......”和“将两个分支合并到一个工作副本而不提交”是不兼容的要求:或者您将在分支之后测试分支或混合两个分支一个大混合。

版本A 无论如何 - 你可以将任何节点与任何节点合并到repo-tree中,而不仅仅是 somebranch 和trunk。即,共同点,@ JoelFan工作流程很好,但是 - 需要更少的操作

  1. 将主干的HEAD复制到AB
  2. 将AB与A合并
  3. 提交合并,测试等......
  4. 将AB与B合并
  5. 测试合并结果
  6. 合并到主干并删除临时AB分支
  7. 版本B 是2-URL合并。 svn help merge,“2-URL合并示例”部分作为开​​始。您可以将2个独立分支合并为第三个命令merge BRANCHA[@N] BRANCHB[@M] [TRUNK_WCPATH]