Skip to content

Code development and review in the regional_workflow repository

Gillian Petro edited this page Jul 8, 2022 · 24 revisions

Authoritative branch

The main development branch for the regional_workflow repository is develop, which is protected by the code management team:

  1. Pull requests for this branch require approval by at least one code reviewer
  2. A code manager should perform the review and the merge, but other contributors are welcome to provide comments/suggestions

Code review committee

Scientists from across multiple labs and organizations have volunteered to review pull requests for the develop branch:

NSSL: Yunheng Wang (@ywangwof)
EMC: Chan-Hoo Jeon(@chan-hoo), Ben Blake (@BenjaminBlake-NOAA), Ratko Vasic (@RatkoVasic-NOAA)
GSL: Jeff Beck (@JeffBeck-NOAA), Gerard Ketefian (@gsketefian), Linlin Pan (@panll), Christina Holt (@christinaholtNOAA), Christopher Harrop (@christopherwharrop-noaa), Daniel Abdi (@danielabdi-noaa)
EPIC: Mark Potts (@mark-a-potts), Jong Kim (@jkbk2004), Natalie Perlin (@natalie-perlin), Gillian Petro (@gspetro-NOAA), Edward Snyder (@EdwardSnyder-NOAA)
NCAR: Mike Kavulich (@mkavulich), Will Mayfield (@willmayfield)
GLERL/UM: David Wright (@dmwright526)

How to contribute changes to the develop branch

The regional_workflow repository follows the same code management rules as the Short-Range Weather (SRW) Application repository (ufs-srweather-app). See the SRW App Code Contributor's Guide for guidelines on code contributions, best practices, and testing requirements. Communication with code managers and the code review committee throughout the contribution process is encouraged.

How to sync your fork with the authoritative repository

As development in the main authoritative repository moves forward you will need to sync your fork's branches to stay up-to-date. Below is an example of how to sync your fork's copy of a branch with the authoritative repository copy. The branch name for the example will be "feature/new_thing". Click here for documentation on syncing forks.

  1. Clone your fork and checkout branch that needs syncing:
$ git clone https://github.com/JoeSchmo-NOAA/regional_workflow.git ./fork
$ cd fork
$ git checkout feature/my_new_thing
  1. Add upstream info to your clone so it knows where to merge from. The term "upstream" refers to the authoritative repository from which the fork was created.
$ git remote add upstream https://github.com/NOAA-EMC/regional_workflow.git
  1. Fetch upstream information into clone:
$ git fetch upstream

Later on you can update your fork's remote information by doing the following command:

$ git remote update
  1. Merge upstream feature/other_new_thing into your branch:
$ git merge upstream/feature/other_new_thing
  1. Resolve any conflicts and perform any needed "add"s or "commit"s for conflict resolution.

  2. Push the merged copy back up to your fork (origin):

$ git push origin feature/my_new_thing
  1. Note the sync in the GitHub issue tracking your work.

Done!

Moving forward you'll want to perform the "remote update" command regularly to update the metadata for the remote/upstream repository in your fork (e.g. pull in metadata for branches made in auth repo after you forked it):

$ git remote update