0

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

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

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

  1. 在主干文件夹中创建存储库并在那里添加新的应用程序版本文件
  2. 在旧应用程序版本的分支文件夹中创建存储库
  3. 在标签文件夹中为两个存储库创建标签。

在下一个时期,我应该继续在上一个版本(主干)上进行开发,同时修复旧版本(分支)上的错误。如何(每周)将分支版本的更改合并到主干?我尝试了合并选项,但结果真的很奇怪(某些文件夹的内容被完全删除),你认为这种情况的最佳解决方案是什么,我不想每次修复分支上的错误时都手动更改主干代码

谢谢,

明佳

4

1 回答 1

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而不是 OS-replacement svn rm+的结果svn add和日志中不相关的文件)。最坏的消息:我不知道如何svn mv在合理的时间内以防弹的方式做到(找到所有候选人),只使用 Subversion

于 2013-01-15T15:58:52.860 回答