合并从旧应用程序版本到主干的更改

时间:2013-01-15 14:59:40

标签: svn tortoisesvn

我有旧的应用程序版本。它是过去从外部公司提供的,它基本上是应用程序的实时版本。

虽然在此版本上执行了错误修复,但外部公司在现有版本上开发了新功能(重大模型更改)。现在我有旧的应用程序版本(现场版)和最后一个应用程序版本(未经过测试,需要更多更改)。

现在我想把所有这些都放在svn上,我已经完成了以下步骤:

  1. 在trunk文件夹中创建了存储库,并在那里添加了新的应用程序版本文件
  2. 在旧应用程序版本
  3. 的branches文件夹中创建了存储库
  4. 为标记文件夹中的两个存储库创建了标记。
  5. 在下一个时期,我应该继续开发最后一个版本(trunk),同时修复旧版本(分支)上的错误。如何(每周)将我的分支版本的更改合并到主干?我尝试使用合并选项,但结果非常奇怪(某些文件夹的内容已被完全删除),您认为这种情况的最佳解决方案,我不想每次修复分支上的bug时手动更改中继代码< / p>

    谢谢,

    Minja

1 个答案:

答案 0 :(得分:0)

你在初始步骤上犯了一些错误,因此,有两个不相关的代码片段,Subversion不知道它们的进化路径。

稍作修改的工作流程可能是:

对于具有默认单项目布局(当前)的空存储库

  • 将OLD-CODE导入/ trunk(或使用checkout + add + commit添加文件)
  • 将此主干分支到某个分支(svn copy URL-OF-TRUNK URL-OF-BRANCH-OLDCODE
  • 获取行李箱的WC(svn co或使用步骤1中的WC)
  • 用NEW-CODE替换WC中的OLD-CODE
  • 提交主干

之后你的后续合并将是(只是轻微的)不那么令人头疼的任务。只是略微因为在任何情况下合并远远改变的重构代码都不是一件容易的事,但是你的代码和普通父母至少会有连续的历史记录。

坏消息:对连续历史的需求决定了倒数第二步中代码替换操作的额外要求:你不能只删除过时的文件/目录,如果新对象是后代,你可以添加新的旧对象(重构的孩子) - 你必须支持父子之间的历史记录svn mv而不是操作系统替换的结果svn rm + {{1和日志中不相关的文件)。最糟糕的消息:我不知道怎么做(找svn add的所有候选人)在合理的时间内以防弹的方式,仅使用Subversion