在发布之前和之后我应该如何分支和标记?

时间:2009-06-22 16:27:27

标签: svn build-process release-management

我一直在考虑我目前正在使用的部署过程,我想知道是否有一种很好的方法来处理分支/标记将要/已经发布到生产的代码。

在某些时候,我想将分支作为发布分支,并对分支进行最后一分钟更改并释放它。然后在释放后我想将它保存为标签。

为了澄清,我正在寻找命名,处理分支和处理标记的约定。我也想知道是否有其他方法来处理这种情况。

  • 您是否每次都使用新代码命名发布分支或使用相同的发布分支?
  • 将发布分支作为标记存在后删除它们吗?
  • 您如何命名分支/标签?

5 个答案:

答案 0 :(得分:2)

我建议阅读这个答案

Release management in SVN

基本上有一个名为RELEASE的分支,如果你愿意,可以从那里标记。并在trunk中保留前沿代码版本

就发布命名而言:它取决于最适合您的内容以及看到版本号的人员。

考虑使用MajorRelease.MinorRelease,然后可能在技术上感兴趣的某处你甚至可以指定补丁发布号(e.gg app autoupdates和major.minor保持相同)。

专业:重大变化 - >新功能/打破兼容性 次要:接口兼容(例如性能) 补丁:错误修复

答案 1 :(得分:1)

即使您没有使用TFS,也可以使用此处的信息作为指导。

Branching Guidance

答案 2 :(得分:1)

工作方式很多。我使用的是以下内容:

project_repository
|
|- trunk //Where the current in support release is.
|
|- branches //Where new features/big fixes or refactors are made.
|
|- tags //Where all releases are tagged.
     |
     |- releases //where all release tags are located
     |- daily //where all daily tags are located.

我们使用的命名如下:

  • 对于分支,我们通过将在其中进行的主要任务来命名分支(例如:admin_module_refactor)。
  • 对于标签,当它们对应于发布标签时,我们将标签命名为版本号(mayor.minor.micro。例如:1.0.2)。或者使用日常工作标签的日期(例如:YY_MM_DD)。

为了遵循这种结构和命名约定,我们有一组工具和脚本可以帮助这种方式工作。此外,每天都有标记由构建服务器生成。

答案 3 :(得分:0)

我使用CruiseControl.Net自动化构建过程。我们的构建对应于构建号,因此dll版本将为6.5.4.1234。当我们有主要和次要版本时,6和5总是会手动更新。 4在构建之后手动更新(并且1234也被重置为0)。构建过程始终将1234更新为1235。

当我们从trunk发布时(版本总是6.0.0.x),我们会手动分支并将其称为Branch_6_0。然后该分支将构建为6.0.1。 Trunk会移动到6.1或7.0。

CruiseControl有两种模式(开发和测试)。测试始终按需创建​​,并将创建与构建版本对应的分支。

答案 4 :(得分:0)

  

在某些时候我想做一个分支   作为发布分支并制作任何   最后一分钟更改分支和   释放它

这让我很担心。通常,您需要创建一个分支,对其进行所有开发,然后使用主干重新集成该分支。从主干上的这一点创建您的标签。如果您想进行更多更改,请创建新分支,编辑,重新集成和重新发布。

请勿尝试对发布分支进行更改,因为您可能会丢失它们,或者将它们合并到主干上时会遇到麻烦。

发布分支的另一种方法是对trunk进行所有开发更改,并在准备好后创建一个release / tag分支。对于小型开发商店来说,这通常是最简单的方法。 (当您对其他人正在进行更改的产品进行重大更改时,另一种方法很有效。)