svn - 当我应该为一些重大更改(Subversion,TortoiseSVN)创建一个分支时,我一直在 Trunk 中工作

标签 svn tortoisesvn

我着手进行了一系列涉及应用程序许多不同领域的重大更改,需要对数据库架构、我们的对象和表示代码进行更改。我从 rev.1101 开始你可以认为这是创建一个分支的完美案例,一旦它经过测试和完成,稍后将合并并集成回主干。

但我没有创建一个新的分支。我一直在 Trunk 上工作。

Here is the situation we started with

Trunk 现在是 rev.1116,我处于令人羡慕的 (?) 位置,我必须对大约 15 个版本前的修订版执行一些错误修正,这是生产中的当前版本,然后发布修正了错误的“rev.1101+错误修正” "无需任何 1102-1116 版的工作即可进行生产。

问题:如何“恢复”主干并将所有最近的更改移动到一个分支? 我现在是否从 Trunk 中的内容创建一个分支并成为/Branches/MajorChangeSet,然后将 Trunk 恢复到 rev.1101,将其视为现在官方的 Trunk 并开始修复那里的错误?

A map of our SVN revisions, branches, etc.

更新:我遵循了下面 ChrisH 推荐的程序(根据上面的模型),我们现在状态很好。我们一直在继续更新“rev. 1102 production”,修复和小功能增强。这些已轻松且易于合并到主干中,以确保这些更改也纳入我们的新开发工作中。谢谢大家!

Branch v. Trunk | Branch/Tag/Trunk? | Branch when?

最佳答案

我建议每次开始做候选发布时都创建一个发布分支。 Trunk 继续工作以处理未在发行版中进行的工作(正如我们所说的 .next 版本)。发布分支仅保留用于错误修复和必须在发布中进行的内容。最好总是先将它们提交到主干,然后选择将它们合并到发布分支。总是尝试将 FROM 主干合并到其他分支,因为这会让事情变得更容易。将“功能分支”重新集成到主干中是可以的,但应避免在发布分支中修复错误然后将其合并回主干。

在发布后,发布分支会保留下来以修复其他错误并最终进行小点发布。您仍然应该首先修复主干中的错误(在 .next 版本中发布它们没有意义)并将它们合并到您仍在积极维护的每个发布分支中。

好消息是您可以在事后开始使用这种方法。返回到当前版本构建的主干修订版,并从中创建一个发布分支。 TortoiseSVN 有一个方便的菜单,当您在日志查看器中右键单击修订时,可以从特定修订创建标记和分支。

一旦你有了你的发布分支,你需要检查它并开始合并你想要发布的错误修复。您在主干中的所有新工作都保持原样。如果主干和发布分支显着不同,那么您可能只需要直接在发布分支上进行修复,但尝试在主干中进行修复并尽可能合并到发布分支。

还有一件事。每次从发布分支发布发布时,您都应该复制到带有发布版本标签的标签。以后可以很方便地找出版本之间发生了什么变化,或者如果需要,可以重建旧版本。我们尽可能在发布版本时根据标签进行完整构建,因为我们在产品版本中嵌入了 SVN 修订号,这样如果客户报告了错误,我们就可以确切地知道他们正在运行什么代码(因为 SVN 修订版是唯一的)跨存储库)。

希望能帮到你,祝你好运。

关于svn - 当我应该为一些重大更改(Subversion,TortoiseSVN)创建一个分支时,我一直在 Trunk 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5759822/

相关文章:

TortoiseSVN 中的 Windows 资源管理器图标需要很长时间才能刷新到正确状态

svn - TortoiseSVN 文件夹重命名总是失败

php - 开发环境 - 从开发到登台服务器再到生产的 VCS

java - Eclipse 合并问题与 Android (Java) 项目

svn - 支持 SVN 的 UBUNTU 上的 PHP/JS/HTML/CSS IDE

windows - 如何使用 svn 比较两个文件夹并生成报告

windows - 在 Windows XP 上删除 .svn 目录时出现问题

authentication - Dockerfile 中的 Subversion 导出/结帐而不在屏幕上打印密码

TortoiseSVN - "you have to update your working copy first"

tortoisesvn - SVN 提交错误 : Can't open file txn-current-lock Permission denied