Start the standard release process

In this document:

  • X.Y is the version of Serval Mesh being released
  • X.W is the previous version that the release supersedes (usually W=Y-1), could be X.W.B if prior release was a bugfix.

To commence a standard release (not a bugfix or hotfix) of the Serval Mesh app for Android:

Ensure there is no existing release branch

Use the Git commands in Discover the release status to discover if an old release branch still exists. If it does, the last release process was not finished properly; alert a senior developer.

Senior developers should investigate whether the prior release was actually published:

  • If it was, then follow the instructions in Finish the release process to ensure that the prior release branch was merged into the master branch, that the prior release tags are in order, that other release housekeeping was done, and to delete the old release branch.
  • If it was not, then Abandon the prior release.

Ensure master branch is merged into development branch

In an up-to-date Git clone of the Batphone GitHub repository, the following command will reveal whether the Batphone Git master branch has been merged into the Batphone Git development branch:

$ git branch --remotes --merged origin/development
  origin/HEAD -> origin/development
  origin/development
  origin/master
$

If origin/master does not appear in the output, then it has not been merged. The last release process was not finished properly. Follow the instructions in Finish the release process to perform the merge.

Get up-to-date development branch

In an up-to-date Git clone of the Batphone GitHub repository:

$ git checkout development
Switched to branch 'development'
$ git reset --hard origin/development
HEAD is now at hHhHhHh This is the last commit comment before releasing version X.Y
$

Update Release Notes, README and CONTRIBUTORS

Most of the work in this step should already have been done, provided that the Batphone Git development branch housekeeping and Prepare for release tasks were properly carried out. If not, the release developer will either have to do all the work or delegate the work.

In up-to-date Batphone Git development branch (from the step above):

  • The prior release notes should have been copied into the doc directory with the proper file name (RELEASE-X.W.md), and edited to fix relative links:
    • replace ./ with ../ (eg, ./INSTALL.md becomes ../INSTALL.md)
    • replace ./doc/ with ./ (eg, ./doc/RELEASE-0.90.md becomes ./RELEASE-0.90.md)
  • The CURRENT-RELEASE file (release notes) should be up-to-date:
    • the version number should be correct
    • the document date (directly below the main title) should be correct
    • the target Android version must be correct
    • the Warnings section must still be correct and relevant (eg, the EXPERIMENTAL SOFTWARE warning will cease to be appropriate at some point)
    • the new What's new since <previous version number> section should have plenty of detail and fully itemise all newly fixed issues (linking to the GitHub issue pages)
    • all old What's new sections should be removed
    • the Supported devices section should be up-to-date
    • the Known issues section should be up-to-date:
      • fixed issues should now be listed in the “What's new since …” section
      • new issues should be added (with links to the GitHub issue pages)
      • the descriptions of existing issues should be reviewed
  • Edit the README file to make it correct and consistent with the Release Notes (as reviewed above):
    • there should be no version number anywhere in the text; it should only refer indirectly to the current version by linking to the current Release Notes
    • the target Android version must be correct
    • the Warnings must still be correct and relevant (eg, the EXPERIMENTAL SOFTWARE warning will cease to be appropriate at some point)

Commit and push the changes:

$ git branch
  a-branch-name
* development
  master
  another-branch-name
$ git status --short
?? doc/RELEASE-X.W.md
 M CONTRIBUTORS.md
 M CURRENT-RELEASE.md
 M README.md
$ git add .
$ git status --short
A  doc/RELEASE-X.W.md
M  CONTRIBUTORS.md
M  CURRENT-RELEASE.md
M  README.md
$ git commit -m 'Update Release Notes, README and CONTRIBUTORS ready for release X.Y'
[development hHhHhHh] Update Release Notes, README and CONTRIBUTORS ready for release X.Y
 3 files changed, NN insertions(+), NN deletions(-)
 create mode 100644 doc/RELEASE-X.W.md
$ git push --quiet
$

Create release branch

In an up-to-date Git clone of the Batphone GitHub repository, use the following commands to create a release branch from the HEAD of the Batphone Git development branch (where X.Y is the version of the release being performed):

$ git branch --no-track release-X.Y origin/development
$ git push --set-upstream origin release-X.Y
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:servalproject/batphone.git
 * [new branch]      release-X.Y -> release-X.Y
Branch release-X.Y set up to track remote branch release-X.Y from origin.
$

Login