Batphone Git master branch

The master branch of the Batphone Git repository contains all the commits from which were built all the public releases of Serval Mesh, ie, all versions of the source code which are identifiable by a version number.

The master branch is not used for development or debugging. That activity is performed using the Batphone Git development branch or feature branches.

Branch HEAD

The HEAD of the master branch is the source code of the most recent release and always has the following properties:

  • it is tagged with the release's version number (an annotated tag) — see below
  • it is always a merge commit (usually empty; see below) of the prior release and the final release candidate for the current release.

Common queries

The following Git command performed in an up-to-date Git clone of the Batphone repository will always reveal the latest release or release candidate:

$ git describe origin/master
0.91
$

This works as long as the committing and tagging rules (see below) are followed.

Rules for committing

Source code on the master branch is never edited and committed directly (unlike the Batphone Git development branch).

The head of the master branch can only be advanced by senior developers:

  • Merging in a release branch at the conclusion of a Release procedure. This must be done using the --no-ff option to avoid a fast-forward merge, to ensure that there is a distinct commit for every version, since release tags (see below) cannot share the same commit.

Release tags

Each released commit on the master branch is tagged with its version number, for example 0.08, 0.90. Every release tag must be annotated, otherwise the Git describe command will not produce the correct result.

The following Git command performed in an up-to-date Git clone of the Batphone repository will list all the release tags and the first lines of their annotations:

$ git tag --list -n1 | egrep '^[0-9]+\.[0-9]+(\.[0-9]+)?\s'
...
0.08            release 0.08
0.90            0.90 Release Version
0.90.1          Update 0.90.1 tag to fix broken links in release notes
0.91            Release 0.91
...
$ 

The Release procedure gives instructions for creating release tags.

Release candidate tags

Some commits on the master branch may be tagged as release candidates, which have names of the form version_number .RC candidate_number, eg, 1.4.RC2. These tags may not coincide with release tags (see above) or with each other. Every release candidate tag must be annotated, otherwise the Git describe command will not produce the correct result.

The following Git command performed in an up-to-date Git clone of the Batphone repository will list all the release candidate tags and the first lines of their annotations:

$ git tag --list -n1 | egrep '^[0-9]+\.[0-9]+[.-]RC[0-9]+\s'
...
0.08.RC1        Release Candidate
0.90.RC1        0.90 Release candidate
0.91.RC1        0.91 Release candidate
0.91.RC2        0.91 RC2
...
$ 

The Release procedure gives instructions for creating release candidate tags.


Login