Finish the release process

These instructions must be executed in the correct order as part of the Release procedure. The release process can only be “finished” after the release has been published. If the release has not been published, then these instructions do not apply, instead you must abandon the release.

Merge release branch into master branch

The --no-ff option to the Git merge command forces the merge to create a separate commit on the master branch (ie, not just do a fast forward). This gives the release tag (see below) its own revision to occupy, and helps keep the revision history clear.

The merge should complete without any merge conflicts, because the head of the master branch should already be an ancestor of the development branch.

$ git checkout master
Switched to branch 'master'
$ git merge --no-ff --message='Release X.Y' release-X.Y
Removing src/org/servalproject/name/SomeClassName.java
Removing src/org/servalproject/name/AnotherClassName.java
...
Merge made by the 'recursive' strategy.
 CURRENT-RELEASE.md                                              |  268 ++++++------------
 INSTALL.md                                                      |  212 ++++++++++----
 README.md                                                       |   81 +++---
 doc/RELEASE-X.W.md                                              |  419 ++++++++++++++++++++++++++++
 jni/serval-dna                                                  |    2 +-
 ...
 107 files changed, 4092 insertions(+), 8681 deletions(-)
 ...
 create mode 100644 doc/RELEASE-X.W.md
 ...
 create mode 100644 src/org/servalproject/name/NewClassName.java
 create mode 100644 src/org/servalproject/name/AnotherNewClassName.java
$

Tag the release

Tag the revision produced by the merge in the prior step, with the name “X.Y”. The --annotate option is necessary to annotate the tag, otherwise it will be overlooked by the Git describe command, and the instructions in Discover the release status will not work.

$ git tag --annotate X.Y master
$

Merge the master branch into development branch

This step is needed to ensure that the Merge release branch into master branch step above will merge cleanly in the next release, and to ensure that the instructions in Discover the release status will give the correct result.

This merge may need manual resolution of edit conflicts if there has been significant activity on the development branch since the release branch was first created.

$ git checkout development
Switched to branch 'development'
$ git merge --message='Merge master (release X.Y) into development'
...
$

Delete the release branch

$ git branch --delete release-X.Y
Deleted branch release-X.Y (was xXxXxXx).
$

Push to GitHub

Push the new master and development branch heads and the new X.Y tag to GitHub, and delete the release branch from GitHub.

$ git push origin X.Y master development :release-X.Y
Writing objects: 100% (1/1), 42087 bytes, done.
Total 7 (delta 0), reused 0 (delta 0)
To git@github.com:servalproject/batphone.git
 * [new tag]         X.Y -> X.Y
   HhHhHhH..hHhHhHh  master -> master
   HhHhHhH..hHhHhHh  development -> development
 - [deleted]         release-X.Y
$

Update the OpenWRT package feed

Create a new batphone-X.Y feed branch in the Serval Project OpenWRT package feed repository.


Login