Forward port patches/07_log_to_file_by_default
[tor.git] / doc / version-spec.txt
blob85a5e10c39f573d4b6e4db50cec0f984e52eef73
1 $Id$
3 HOW TOR VERSION NUMBERS WORK
4 ============================
6 The Old Way
7 -----------
9 Before 0.1.0, versions were of the format:
10     MAJOR.MINOR.MICRO(status(PATCHLEVEL))?(-cvs)?
11 where MAJOR, MINOR, MICRO, and PATCHLEVEL are numbers, status is one
12 of "pre" (for an alpha release), "rc" (for a release candidate), or
13 "." for a release.  As a special case, "a.b.c" was equivalent to
14 "a.b.c.0".  We compare the elements in order (major, minor, micro,
15 status, patchlevel, cvs), with "cvs" preceding non-cvs.
17 We would start each development branch with a final version in mind:
18 say, "0.0.8".  Our first pre-release would be "0.0.8pre1", followed by
19 (for example) "0.0.8pre2-cvs", "0.0.8pre2", "0.0.8pre3-cvs",
20 "0.0.8rc1", "0.0.8rc2-cvs", and "0.0.8rc2".  Finally, we'd release
21 0.0.8.  The stable CVS branch would then be versioned "0.0.8.1-cvs",
22 and any eventual bugfix release would be "0.0.8.1".
24 The New Way
25 -----------
27 After 0.1.0, versions are of the format:
28    MAJOR.MINOR.MICRO(.PATCHLEVEL)(-status_tag)
29 The stuff in parenthesis is optional.  As before, MAJOR, MINOR, MICRO,
30 and PATCHLEVEL are numbers, with an absent number equivalent to 0.
31 All versions should be distinguishable purely by those four
32 numbers. The status tag is purely informational, and lets you know how
33 stable we think the release is: "alpha" is pretty unstable; "rc" is a
34 release candidate; and no tag at all means that we have a final
35 release. If the tag ends with "-cvs", you're looking at a development
36 snapshot that came after a given release.  If we *do* encounter two
37 versions that differ only by status tag, we compare them lexically.
39 Now, we start each development branch with (say) 0.1.1.1-alpha.  The
40 patchlevel increments consistently as the status tag changes, for
41 example, as in: 0.1.1.2-alpha, 0.1.1.3-alpha, 0.1.1.4-rc 0.1.1.5-rc,
42 Eventually, we release 0.1.1.6.  The next patch release is 0.1.1.7.
44 Between these releases, CVS is versioned with a -cvs tag: after
45 0.1.1.1-alpha comes 0.1.1.1-alpha-cvs, and so on.