Project

General

Profile

ReleaseProcess » History » Version 1

Adam Sutton, 2012-11-07 13:29

1 1 Adam Sutton
h1. Release Process
2
3
There have been a few questions about the Tvheadend release process and numbering scheme, so I thought I would try and clarify a few things.
4
5
h2. Version Numbering
6
7
Tvheadend uses a standard MAJOR.MINOR.PATCH numbering system, though we omit PATCH for the first release in a given series, i.e. 3.2.
8
9
The PATCH number is not incremented on each release, but is automatically calculated using the __git describe__ command. This simply provides a PATCH number that represents the number of commits since the last git tag.
10
11
E.g. the first patch release of the [[Tvheadend-32|v3.2]] series is 3.2.18 (as there were 18 commits since 3.2).
12
13
The __git describe__ command will also add ~COMMIT for all builds except the first in a release series. The COMMIT field is the git SHA1 code that represents the commit from which the build was made.
14
15
Note: when reporting bugs the most useful thing to include is the full MAJOR.MINOR(.PATCH~COMMIT) information as reported in the TVH UI.
16
17
h2. Development Cycles
18
19
As of [[Tvheadend-30|v3.0]] Tvheadend uses an odd/even MINOR number to distinguish development cycles from releases. Therefore [[Tvheadend-30|v3.0]], [[Tvheadend-32|v3.2]] and [[Tvheadend-34|v3.4]] represent stable releases and v3.1, v3.3, etc.. are used to represent development cycles.
20
21
All builds from the git master branch will use development numbers.
22
23
h2. Release Branches
24
25
Once a release series is ready to enter feature freeze (beta stage) a release branch will be created, vX.Y will have the branch release/X.Y.
26
27
All release related work will be done here, fixes will normally first be committed to master and they __cherry-picked__ into the release based on whether they are considered critical enough etc...
28
29
h2. Beta's and pre-releases
30
31
Because of the use of automated versioning using __git describe__ pre-release versions will always have a development version number from the preceding development cycle. I.e. 3.2beta5 was officially known as 3.1.773~gc74b0cf.
32
33
h2. Tagging
34
35
The first release of a series is always tagged vX.Y, this format is distinguished by our versioning scripts that wrap the __git describe__ command, so that we get consistent automatic numbering from this point.
36
37
When a release X.Y is branched a new commit will be added to master and tagged vX.Y+1 to indicate a new development cycle has begun on master ready for the X.Y+2 release.
38
39
Finally pre-release and patch releases are always tagged X.Y(beta|rc|patch)N to make it clear from where they were built. The v prefix is omitted so that these do not interfere with the automatic versioning system.