| 1 | = Release management = |
| 2 | |
| 3 | At any given point there is: |
| 4 | * A development branch ("master" on Github). |
| 5 | New development goes here. |
| 6 | * A release branch (with a name like client_release/7/7.8) |
| 7 | This is the "recommended" version on the BOINC download page. |
| 8 | It changes only to fix significant bugs. |
| 9 | Typically these are fixed in master and "backported" to this branch. |
| 10 | |
| 11 | There may also be: |
| 12 | |
| 13 | * A release candidate branch. |
| 14 | This is a version being tested prior to being released. |
| 15 | It is shown as the "development" version on the download page. |
| 16 | The branch name is of the form client_release/7/7.8 |
| 17 | (the version of the eventual release). |
| 18 | |
| 19 | Version numbers are of the form major.minor.release. |
| 20 | The major number is incremented when there's a big change in functionality. |
| 21 | The minor number is odd for test versions, even for release versions. |
| 22 | |
| 23 | Note: while a version is being tested, its branch is e.g. 7.8, |
| 24 | but the client versions are 7.7. |
| 25 | The client version is bumped to 7.8 when the version is promoted to recommended. |
| 26 | |
| 27 | So the overall release management cycle is: |
| 28 | |
| 29 | * Go through a period of development. |
| 30 | * At some point, when significant improvements have been made |
| 31 | and the client seems to be stable, create a test branch. |
| 32 | This involves: |
| 33 | * create a branch as described above |
| 34 | * tag the branch with a tag of the form client_release/7.8/7.7.2 |
| 35 | * make and upload to isaac installers for the new version. |
| 36 | * update doc/versions.inc |
| 37 | * update the Alpha test files (boinc_alpha/test.inc) and email Alpha testers |
| 38 | * Monitor Alpha test results. |
| 39 | Distribute bugs to developers. |
| 40 | Backport bug fixes from master as needed. |
| 41 | When significant bugs seem to be fixed: |
| 42 | * update the client version (release #) in the code |
| 43 | * tag the branch as above. |
| 44 | * make installers for the new version |
| 45 | * update doc/versions.inc |
| 46 | * email the Alpha testers again (tell them to test the new release). |
| 47 | * At some point you'll have a version with no major bugs and > 90% test coverage, |
| 48 | and it can become the new recommended release. |
| 49 | * update the client version in the code to an even minor version, release 1. |
| 50 | * in boinc/version.h, unset BOINC_PRERELEASE |
| 51 | * make and upload installers |
| 52 | * update doc/versions.inc |
| 53 | * update boinc_alpha/test.inc and email the alpha testers saying they're done. |
| 54 | |
| 55 | == Updating client version == |
| 56 | |
| 57 | Update the version numbers in |
| 58 | * configure.ac (for Unix) |
| 59 | * version.h (for Win) |
| 60 | * android/BOINC/AndroidManifest.xml (for Android) |
| 61 | |
| 62 | == Creating a branch == |
| 63 | You can do this in Tortoise Git using the "create branch" menu item, |
| 64 | and committing it to the Github repo. |
| 65 | |
| 66 | You can do it in Unix with git -b. |
| 67 | |
| 68 | Creating tags? |