1

我当前的 SubVersion 工作流程是这样的:

  1. 主干用于对主要源代码进行小的内容更改和错误修复。
  2. 分支用于添加/编辑增强功能和项目。

因此,主干更改可以很快进行、测试、提交和部署。然而,增强功能和项目需要额外的用户测试和批准。

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

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

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

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

有没有一种方法可以在不提交合并的情况下做到这一点?

4

5 回答 5

2

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

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

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

版本 A无论如何 - 您可以将任何节点与repo-tree 中的任何节点合并,而不仅仅是带有主干的某个分支。即,共同点,@JoelFan 工作流程很好,但是 - 需要较少的操作

  1. 将主干的 HEAD 复制到 AB
  2. 将 AB 与 A 合并
  3. 提交合并集,测试等...
  4. 将 AB 与 B 合并
  5. 测试合并结果
  6. 合并到主干并删除临时AB-branch

版本 B是 2-URL 合并。svn help merge,“2-URL 合并示例”部分作为开​​始。您可以在一个命令中将 2 个独立的分支合并为第三个merge BRANCHA[@N] BRANCHB[@M] [TRUNK_WCPATH]

于 2012-10-23T13:02:19.807 回答
1

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

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

  1. 切换到分支 A
  2. 将分支 A 与分支 B 合并
  3. 构建应用程序,部署和测试它

如果一切正常,您可以提交所有更改(您在分支 A 上)。然后您可以切换到主干并与分支 A 合并。解决所有冲突后,您可以在主干上提交,仅此而已。

于 2012-09-14T14:03:47.990 回答
1

我们曾经有过类似的工作流程。我最终找到的解决方案是保留多个本地副本,基本上每个分支一个。有时使用共享数据库有点冒险,但总的来说它非常成功。

于 2012-09-14T19:29:57.473 回答
1

您可以在本地驱动器的不同位置签出要合并到的分支的另一个副本,合并到其中然后提交。然后删除整个第二个工作副本并返回您当前的任务。

但看起来你确实在试图颠覆你自己的工作实践——除非你只想将 2 个分支合并在一起以同时提交所有工作并删除 2 个旧分支......但是,是什么阻止你提交给他们和在这种情况下正常合并?

于 2012-09-15T14:05:03.750 回答