Skip to content
Anton Steketee edited this page Jul 18, 2025 · 14 revisions

ACCESS‐NRI MOM6 wiki

This is the ACCESS-NRI fork of the canonical MOM6 Ocean Model "mom-ocean". It is used for ACCCES3 models (currently ACCESS-OM3, see http://access-om3-configs.access-hive.org.au/ and https://github.com/accESS-NRI/access-om3-configs for details )

Authored: @chrisb13, @dougiesquire, @anton-seaice

Fork management

Why is this needed?

This fork management process has been developed to enable ACCESS-NRI to be a MOM6 node whilst having flexibility to have releases that differ from the Mom-ocean repository. The aspiration is to stay as close to the MOM-ocean upstream as possible, contributing to development and always having a common parent with mom-ocean.

Overview

This fork follows a process of "rolling release branches". Local changes are accumulated in a release branch that is branched from mom-ocean:main. When new changes are wanted from upstream, a new release branch is created. Specifically:

  1. When upstream changes are needed in ACCESS, a new release branch is created (named YYYY.MM) that branches from the latest mom-ocean:main. This new branch becomes the default branch.

  2. If there are any local changes from the previous release that have not since been included upstream, these are re-applied onto the new release branch (usually via cherry-picking).

  3. Additional local changes can be made to the current release branch via PRs from feature branches. Local changes that are candidates for inclusion upstream can be cherry picked into dedicated PR candidate branches (named nri-to-main-YYYYMMDD).

  4. When there a new upstream changes that are needed in ACCESS, a new release branch is created (i.e. return to step 1). Release branches are never merged and are retained.

See below for specific guidance on tasks.

%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchName': 'mom-ocean', 'mainBranchOrder': '50'}} }%%
      gitGraph
        checkout mom-ocean 
        commit
        commit id: "B"
        branch 2025.05 order: 10
        checkout 2025.05
        commit id: "D"
        commit id: "E" type: HIGHLIGHT tag: "2025.05.001"
        commit id: "F"
        commit id: "G" type: HIGHLIGHT tag: "2025.05.002"
        checkout mom-ocean
        commit
        branch "nri-to-main-20250702" order: 60
        cherry-pick id: "F"
        checkout mom-ocean
        merge nri-to-main-20250702 
        commit id: "H"
        branch 2025.08 order: 5
        checkout 2025.08
        cherry-pick id: "D"
        checkout mom-ocean
        commit
        checkout 2025.08
        cherry-pick id: "E"
        checkout mom-ocean
        commit
        checkout 2025.08
        cherry-pick id: "G" 
        checkout mom-ocean
        commit
        checkout 2025.08
        commit id: "I" type: HIGHLIGHT tag: "2025.08.001"
Loading

Specific guidance on tasks

Creating a new release branch with updates from mom-ocean/MOM6

  • Sync the upstream-main branch from mom-ocean/MOM6:main. Simply go to that branch on Github and click “Sync fork”.
  • Checkout a new release branch from upstream-main following the naming convention YYYY.MM, where YYYY and MM are the year and month of the latest commit on upstream-main.
  • Set the new release branch to the default branch. From Github, go to Settings → General and enter the new branch name under "Default branch".
  • Cherry-pick any required changes from the previous release branch into the new release branch, resolving any conflicts. Changes that have been merged upstream since the last release branch obviously need not be cherry-picked.

Testing PRs to mom-ocean/MOM6

This is similar to “Creating a new release branch”, with the following differences:

  • The new branch should be created from the upstream PR branch and should be named PR-test/<name-of-PR-branch>
  • The default branch should not be changed

Develop features and submit them upstream

  • Create a feature branch from latest mom-ocean/MOM6:main with the name nri-to-main-YYYYMMDD, where YYYY, MM and DD are the current year, month and day.
  • Make your changes in the feature branch, e.g. cherry-picking changes to go upstream from the release branch.
  • Submit a PR to mom-ocean/MOM6:main.