发布管理 - 最佳实践

13

我在一家产品开发公司工作。我们首先进行内部版本发布,然后再进行公共发布。我想知道其他产品开发公司是如何管理其发布的?他们如何确定发布编号?标记源代码控制?

8个回答

12
我们使用SubVersion,其中标签和分支的创建成本很低。
至于发布方面,我们遵循这个惯例:
(主要版本).(次要版本).(修补程序版本).(SVN修订)
- 修补程序版本=错误修复 - 次要版本=二进制兼容/接口兼容 - 主要版本=包括破坏性变化。
这有意义吗?如果需要更多信息,请添加评论,我会编辑我的帖子以澄清。

5
在使用 Git 之后,我不太确定我会说 Subversion 的分支和标签易于创建…… - Bob Aman
Bob说过,我们即将从Subversion转移到Git,部分原因是在Git中分支和标记的成本要比SVN低得多。http://www.whygitisbetterthanx.com/是几个版本控制系统的很好的比较网站,尽管它明显更偏爱Git。 - Owen Blacker

3

我创建了一个类似的问题, 但我想要补充一点:我强烈建议使用类似于Jira这样的工具来管理发布周期。你可以将提交与请求/问题/错误相关联,然后将其标记为发布的一部分。

特别是,如果你想知道如何管理一个良好的发布周期,请看看Apache基金会是如何做到的,因为他们已经将其变成了一门科学。例如,这里是Mahout项目中发布路线图的链接

除了跟踪问题并将它们打包到发布包中的工作系统外,您还需要开始将其与您的持续集成(我曾使用过CruiseControl和Hudson)和单元测试相集成,以便您的构建周期与其他所有内容一起管理。


2
我曾在一家定制软件提供商工作,后来逐渐转型为解决方案提供商,因为客户决定不想自己实现呼叫中心和网站。在这种情况下,每个主要客户都有机会定制系统的某些方面。因此,开发人员拥有一个核心产品,其中包含所有合同共有的组件,并为每个客户分别创建分支(有些客户需要进行微小调整,而其他客户则需要与其他系统进行重大集成)。这种方法一开始还行,但当业务增长并且分支数量扩大时,往往要容纳一些非常烂的变更。有一次,我认为他们有15个不同的活动版本相同的代码库......这使得事情变得非常不灵活和难以支持。不要像我们一样做 - 让您的发布具有可伸缩性!

2
正如其他人所说,处理版本管理的最佳方式是通过分支。我强烈建议您查看TFS分支指南(http://tfsbranchingguideii.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20785),该指南解释了创建分支结构的几种方法,这取决于您的项目规模以及向最终用户提供软件的不同方式(主要发布、服务包、热修补程序)。大部分内容都不特定于TFS,因此您可以将其应用于大多数其他源代码控制系统。请注意保留HTML标签。

1
我们使用SVN为每个版本创建两个分支。一个是用于构建此版本的源代码的标签,另一个是实际发布的二进制文件的新导入。这很重要,因为(无论您如何尝试使两个开发人员的计算机相同,或者尝试维护稳定的构建机器),不可避免地,当您在6个月后尝试重新生成X构建时,您会发现某些内容已经改变,结果得到的二进制文件略有不同。
小修补程序是在从发布源分支复制的分支中进行的,并合并到主干中。然后可以通过将发布源分支复制到新分支并合并所需的任何补丁来轻松地进行小版本发布。
主要工作是在从主干复制的分支中进行的,并在完成后合并回主干。然后可以从主干中进行主要版本发布。

1

基于ITIL框架的答案(与其他答案相差不大)。

ITIL将发布分为三组:主要软件发布、次要软件发布和紧急软件修复。

根据ITIL书籍:

•主要软件发布和硬件升级,通常包含大量新功能区域,其中一些可能使中间修复问题变得多余。主要升级或发布通常取代所有先前的次要升级、发布和紧急修复。
•次要软件发布和硬件升级,通常包含小的增强和修复,其中一些可能已经作为紧急修复发布。次要升级或发布通常取代所有先前的紧急修复。
•紧急软件和硬件修复,通常包含对少量已知问题的更正。

因此,按照这个标准,您应该有:

主要版本:v1、V2、v3等
次要版本:v1.1、V2.1等
紧急版本:v1.1.1、V2.1.1等。


你的问题适合在ITIL Stackexchange上讨论。 - SQLMason

1
在我的公司,当一个版本准备好时,我们会为主/次版本号创建一个分支,称为R_2_1之类的名称。初始版本是通过立即创建快照分支或标签R_2_1_0来完成的。当QA针对一个版本报告错误时,在R_X_Y分支上进行代码更改,然后创建一个R_2_1_1分支来标记该版本。因此,树看起来像这样:
Mainline
|
|- R_2_1
|  |
|  |-R_2_1_0 (locked)
|  |
|  |
|  |-R_2_1_1 (locked)
|  |
.  .
.  .
.  .

0

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