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.
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.
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.