在已标记的版本(subversion)中修复一个bug

4
我们使用SVN进行版本控制。主要开发在“trunk”中完成,当涉及到每个用户(当有复杂的更改时)时,会创建分支。
不时地,测试过的版本被标记(例如,“/tags/v0.4”)。
然而,可能会发生一个严重的错误在“trunk”中得到修复(在其他开发过程中)。
现在我想创建一个标记“/tags/v0.41”,它与“/tags/v0.4”相同,但只修正此单个严重错误(可能有多个严重错误,但肯定不是来自“trunk”的所有内容)。
如何使用TortoiseSVN处理这个问题?
我建议这样做:
1.从“/tags/v0.4”创建一个分支(svn copy)到“/tags/v0.41”中, 2.将适用的更改从“trunk”合并到“/tags/v0.41”中并提交。
但这真的是一个好主意吗?
如何将特定的“trunk”修订(仅限于此)合并到“/tags/v0.41”中?实际上,这将不再是一个标记,而是一个分支,这种做法不太好……
1个回答

6

你列出的步骤是正确的。

需要创建一个分支,以确保只提交针对特定bug的修复到新的稳定版本(即trunk),并且不会错误地从开发版本中移植其他可能导致错误的功能。

  • trunk中搜索专门修复你发现的bug的提交,

  • 从中创建一个补丁,并将其应用到/tags/v0.41工作副本(或仅将所需的trunk修订合并到/tags/v0.41工作副本中)。

注意:如果存在多个提交或没有仅修复错误而没有触及其他内容的提交,则必须手动复制相关代码行到新版本的标记版本中!


嗨,谢谢!还有两个问题:1)所以我不需要分支,对吗?我检出/tags/v0.4,应用补丁并签入/tags/v0.41?还是我搞错了什么?2)使用补丁而不是任何类型的合并真的正确吗?我在手册中读到补丁应该避免使用,因为它会破坏文件/修订之间的连接。但也许这在这里不相关... - divB
@divB 是的,实际上合并更正确,前提是你有一个或多个修复了错误而没有其他修改的版本(在其他情况下,你需要手动编辑文件)。你需要检出/tags/v0.4,从主干中合并(或应用补丁,见上文)仅需要的修订版本,并从工作副本创建一个新的/tags/v0.4.1分支。(该分支用于分离每个发布版本的代码,因此 1)如果将来需要再次检索该版本的代码,则无需通过日志搜索,2)不会混淆稳定和alpha代码)。 - Alessandro Menti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接