Skip to content
This repository has been archived by the owner on Mar 6, 2024. It is now read-only.

Branches & Tags

Stefan Arentz edited this page Feb 8, 2022 · 1 revision

Branches & Tags

It is important to understand how we use branches and tags. Below is a description how their meaning within Firefox Focus and how we use them. In the Release Process section below there is more practical guidance on how and when to create branches and tags.

Release Branches

For every major release we create a release branch like releases_v34. This branch is created from main at the point in time when we have decided that main reflects the changes we want in the upcoming release.

The release branch does not have to final, but ideally is very close to final. A release branch is not meant to be a development branch but we can uplift incidental changes to it. For example a patch to change a feature flag or a critical bugfix that was found.

The criteria for what can be uplifted to a release branch need to be documented - for now assume: only critical patches.

Examples of release branches:

We have one release branch per major release. From that branch we can ship the initial version (v34.0.0), minor updates (v34.0.1) and major updates (v34.1.0).

Release Tags

Every release, that is, a version that is pushed to the App Store, has a Release Tag. The release tag follows [semantic versioning] similar to what we do for Fenix.

Examples of semantic versioning are:

  • v34.0.0 for the first major 34 release
  • v34.0.0-rc.2 for the second Release Candidate for the 34 release
  • v34.0.3 for the third minor update for the 34 release

It is explained below in the release checklist when to use what tags.

Release Tags are related to GitHub Releases. In fact, right no wwe do not create tags manually through Git. Instead we create a GitHub Release for Focus.

Examples of past releases:

Right now releases are created manually through the GitHub Releases UI. We try to give the releases consistent versioning, names and descriptions. The above v34 release is a good example.