Branch structure

Last update: 12 Jan 2024 [History] [Edit]

Git Branches

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

We try to minimise the number of branches and try to avoid divergence between those branches that do exist. In particular, bug-fix merge requests targeting the frozen production branch are always swept into the main branch. This does not apply in the opposite direction, so MRs targeting main are not generally swept into the frozen produciton branch. This allows long-term developments to be applied without affecting ongoing operations.

In the event that two branches do diverge such that they can never be merged in the future, merge requests which should target both branches can be propagated via Cherry Picks. 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.

At key points in the life of the experiment, a new frozen production branch is cloned from the main branch. In recent years this has happened annually, a few months before a new data taking year begins. At this point, the main release number for releases built from the new frozen branch is incremented by one, and releases built from the main branch are given a number one higher than that. The old frozen branch is then discontinued.