Release 21 Branch Structure

Last update: 06 Apr 2018 [History] [Edit]

Git Branches

As detailed on Athena Releases, numbered releases of Athena projects are built from specific branches in the git repository.

Changes which should affect multiple branches propagate via two mechanisms. Once a Merge Request is accepted, the code diff applied to the target branch by the Merge Request can be isolated and a new commit created which applies this diff to another branch. This is called a Cherry-Pick and allows for code to be shared between branches whose development has diverted such that they can never be merged together in the future, or when a change is needed quickly in another branch.

The second mechanism is to merge the main git branches into each other every so often, so as to include all commits from one branch in another branch. This is the better mechanism of code distribution as it is the user’s original commit which gets tied into the history of multiple branches, rather than creating new commits as with a Cherry-Pick.

Branch Interactions in Release 21

In 2017-18, 21.0 is the primary branch and is used to build T0 releases. The 21.0-TrigMC, 21.2, 21.3 and 21.9 branches receive multiple merges from 21.0, updating them with the latest developments from the T0 release.

The 21.9 branch contains developments for Run 4 (Phase 2 upgrade) which are independent of the multi-threading related changes going into master. This includes ITk, HGTD and Trigger development. (It also includes the Phase 1 upgrade developments from 21.3.)

The 21.3 branch contains developments for Run 3 (Phase 1 upgrade) which are independent of the multi-threading related changes going into master. This includes Simulation development for mc18, New Small Wheel development and Trigger development.

The 21.2 branch is used to build all analysis and derivation project releases.

The 21.1 branch is used to build the online AthenaP1 release used by the trigger at Point 1. The 21.0-TrigMC branch receives merges from both 21.1 and 21.0.

The 21.0-mc16a branch preserves the mc16a release. It uses the v6 trigger menu from the end of 2016.

mc16c is valid from releases 21.0.32 - 21.0.46, these uses the v7 trigger menu from the start of data taking in 2017 (equivalent to 21.1.3, plus some fixes).

The 21.0-mc16d branch preserves the mc16d release, this uses the v7 trigger menu from the end of 2017 data taking (equivalent to 21.1.20).

mc16e is not yet finalised. It will be produced from 21.0 around July 2018 and equate to expected 2018 online conditions and trigger menu.

Graphical Structure of Release 21

The graph structure for the release 21 branches used in 2017-18 is shown graphical below. Each node represents a significant commit.

Commits which are tagged as numbered releases show the branch, commit ID, release number and which projects were built.

Merges are shown connecting branches, these commits detail which release tag was merged in, or the source branch name if the merge was not performed from a release tag.

Cherry-Picks of individual Merge Requests between branches and to master are not shown.

GitGraph.js is used for visualisation under the MIT Licence.